Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Aktivitas ini Pick menyederhanakan pemodelan serangkaian pemicu peristiwa diikuti oleh handler yang sesuai. Aktivitas Pick berisi kumpulan PickBranch aktivitas, di mana masing-masing PickBranch adalah pasangan antara Trigger aktivitas dan Action aktivitas. Pada waktu eksekusi, pemicu untuk semua cabang dijalankan secara paralel. Ketika satu pemicu selesai, maka tindakan yang sesuai dijalankan, dan semua pemicu lainnya dibatalkan. Perilaku aktivitas .NET Framework 4.6.1Pick mirip dengan aktivitas .NET Framework 3.5 ListenActivity .
Cuplikan layar berikut dari sampel SDK Menggunakan Aktivitas Pick menunjukkan aktivitas Pick dengan dua cabang. Satu cabang memiliki pemicu yang disebut Baca input, yaitu aktivitas kustom yang membaca input dari baris perintah. Cabang kedua memiliki pemicu aktivitas Delay. Jika aktivitas Membaca input menerima data sebelum aktivitas Delay tersebut selesai, Delay penundaan akan dibatalkan dan salam akan ditulis ke konsol. Jika tidak, jika aktivitas Baca input tidak menerima data dalam waktu yang dialokasikan, maka itu akan dibatalkan dan pesan batas waktu akan ditulis ke konsol. Ini adalah pola umum yang digunakan untuk menambahkan batas waktu ke tindakan apa pun.
Praktik terbaik
Saat menggunakan Pick, cabang yang dijalankan adalah cabang yang pemicunya selesai terlebih dahulu. Secara konseptual, semua pemicu dijalankan secara paralel, dan satu pemicu mungkin telah menjalankan sebagian besar logikanya sebelum dibatalkan oleh penyelesaian pemicu lain. Dengan mengingat hal ini, pedoman umum yang harus diikuti saat menggunakan aktivitas Pilih adalah memperlakukan pemicu sebagai mewakili satu peristiwa, dan untuk memasukkan logika sesedikitan mungkin ke dalamnya. Idealnya, pemicu harus berisi logika yang cukup untuk menerima peristiwa, dan semua pemrosesan peristiwa tersebut harus masuk ke tindakan cabang. Metode ini meminimalkan jumlah tumpang tindih antara eksekusi pemicu. Misalnya, pertimbangkan Pick dengan dua pemicu, di mana setiap pemicu berisi Receive aktivitas diikuti oleh logika tambahan. Jika logika tambahan memperkenalkan titik diam, maka ada kemungkinan kedua Receive aktivitas berhasil diselesaikan. Satu pemicu akan selesai sepenuhnya, sementara pemicu lainnya akan selesai sebagian. Dalam beberapa skenario, menerima pesan, dan kemudian menyelesaikan sebagian pemrosesannya tidak dapat diterima. Oleh karena itu, saat menggunakan aktivitas olahpesan bawaan WF seperti Receive dan SendReply, sementara Receive umumnya digunakan dalam pemicu, SendReply dan logika lainnya harus dimasukkan ke dalam tindakan jika memungkinkan.
Menggunakan aktivitas Pilih di perancang
Untuk menggunakan Pilih di perancang, temukan Pick dan PickBranch di kotak alat. Seret dan lepaskan Pick ke atas kanvas. Secara default, Aktivitas Pilih baru di perancang akan berisi dua cabang. Untuk menambahkan cabang tambahan, seret aktivitas PickBranch dan letakkan di samping cabang yang ada. Aktivitas dapat dijatuhkan ke Aktivitas Pilih ke area Pemicu atau area Tindakan dari PickBranch mana saja.
Menggunakan "Pick Activity" di kode
Aktivitas Pick digunakan dengan mengisi koleksi Branches dengan aktivitas PickBranch. Aktivitas PickBranch masing-masing memiliki properti Trigger dari jenis Activity. Ketika aktivitas yang ditentukan menyelesaikan eksekusi, Action dijalankan.
Contoh kode berikut menunjukkan cara menggunakan Pick aktivitas untuk menerapkan batas waktu untuk aktivitas yang membaca baris dari konsol.
Sequence body = new Sequence()
{
Variables = { name },
Activities =
{
new System.Activities.Statements.Pick
{
Branches =
{
new PickBranch
{
Trigger = new ReadLine
{
Result = name,
BookmarkName = "name"
},
Action = new WriteLine
{
Text = ExpressionServices.Convert<string>(ctx => "Hello " +
name.Get(ctx))
}
},
new PickBranch
{
Trigger = new Delay
{
Duration = new TimeSpan(0, 0, 5)
},
Action = new WriteLine
{
Text = "Time is up."
}
}
}
}
}
};
<Sequence xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Sequence.Variables>
<Variable x:TypeArguments="x:String" Name="username" />
</Sequence.Variables>
<Pick>
<PickBranch>
<PickBranch.Trigger>
<ReadLine BookmarkName="name" Result="username" />
</PickBranch.Trigger>
<WriteLine>[String.Concat("Hello ", username)]</WriteLine>
</PickBranch>
<PickBranch>
<PickBranch.Trigger>
<Delay>00:00:05</Delay>
</PickBranch.Trigger>
<WriteLine>Time is up.</WriteLine>
</PickBranch>
</Pick>
</Sequence>