Bagikan melalui


Perancang Aktivitas ParallelForeach

Aktivitas ParallelForEach<T> menghitung elemen koleksi dan menjalankan pernyataan yang disematkan untuk setiap elemen koleksi secara paralel, yang secara asinkron pada utas yang sama. Gunakan aktivitas kontrol alur ini alih-alih aktivitas Sequence jika aktivitas anak dari aktivitas ini diharapkan menganggur.

Aktivitas ParallelForEach<T> memiliki properti CompletionCondition yang berisi ekspresi Visual Basic yang ditentukan pengguna. Aktivitas ParallelForEach<T> mengevaluasi properti ini setelah setiap cabang selesai. Jika mengevaluasi ke true, maka aktivitas ParallelForEach<T> selesai tanpa mengeksekusi cabang lain. Jika CompletionCondition tidak mengevaluasi ke true, maka aktivitas ParallelForEach<T> selesai ketika semua aktivitas turunannya telah selesai.

Aktivitas<T> ParallelForeach

ParallelForEach<T> menghitung nilainya dan menjadwalkan Body untuk setiap nilai yang dijumlahkannya. Ini hanya menjadwalkan Body. Bagaimana isi dijalankan tergantung pada apakah Body menganggur.

Jika Body tidak menganggur, aktivitas dijalankan dalam urutan terbalik karena aktivitas terjadwal ditangani sebagai tumpukan, aktivitas terjadwal terakhir dijalankan terlebih dahulu. Misalnya, jika Anda memiliki koleksi {1,2,3,4} di ParallelForEach<T> dan menggunakan WriteLine sebagai isi untuk menulis nilainya. Anda memiliki 4, 3, 2, 1 dicetak di konsol. Ini karena WriteLine tidak menganggur sehingga setelah 4 aktivitas WriteLine dijadwalkan, mereka dijalankan menggunakan perilaku tumpukan (pertama masuk terakhir keluar).

Tetapi jika Anda memiliki aktivitas di Body yang dapat menganggur, seperti aktivitas Receive atau aktivitas Delay. Maka tidak perlu menunggu mereka selesai. ParallelForEach<T> pergi ke aktivitas isi terjadwal berikutnya dan dicoba dijalankan. Jika aktivitas tersebut juga menganggur, ParallelForEach<T> lanjutkan lagi aktivitas isi berikutnya.

Menggunakan Perancang Aktivitas<T> ParallelForeach

Akses perancang aktivitas ParallelForEach<T> pada kategori Alur Kontrol dari Kotak Alat.

Perancang aktivitas ParallelForEach<T> dapat diseret dari Kotak Alat dan dihilangkan ke permukaan Perancang Alur Kerja di mana pun perancang aktivitas biasanya ditempatkan, misalnya, di dalam perancang aktivitas Urutan. Setelah meletakkannya ke Perancang Alur Kerja, ia membuat aktivitas ParallelForEach<T>, yang secara default berisi DisplayName ParallelForEach<Int32>.

Properti ParallelForEach<T> di Perancang Alur Kerja

Tabel berikut ini memperlihatkan properti aktivitas yang paling berguna ParallelForEach<T> dan menjelaskan bagaimana properti tersebut digunakan dalam perancang.

Nama Properti Diperlukan Penggunaan
DisplayName Salah Menentukan nama tampilan yang mudah diingat dari perancang aktivitas di header. Nilai defaultnya adalah ParallelForEach<Int32>. Nilai dapat diedit di kisi Properti atau langsung di header perancang aktivitas.
Body Salah Aktivitas yang akan dijalankan untuk setiap item dalam koleksi. Untuk menambahkan aktivitas Body, letakkan aktivitas dari kotak alat ke dalam kotak Isi pada perancang aktivitas ParallelForEach<T> dengan teks petunjuk "Taruh aktivitas di sini".
TypeArgument Benar Jenis item dalam koleksi Values yang ditentukan oleh parameter generik T. Secara default, TypeArgument diatur ke Int32. Untuk mengubah jenis T di perancang aktivitas ParallelForEach<T>, ubah nilai kotak kombo TypeArgument di Kisi Properti.
Values Benar Kumpulan item yang akan diulang. Untuk mengatur Values, ketik ekspresi Visual Basic dalam kotak Nilai pada perancang aktivitas ForEach<T> dalam kotak dengan teks petunjuk "Masukkan ekspresi VB" atau di kotak Nilai pada jendela Properti.
CompletionCondition Dievaluasi setelah setiap perulangan selesai. Jika dievaluasi ke true, maka perulangan terjadwal yang tertunda dibatalkan. Jika properti ini tidak diatur, semua pernyataan terjadwal dijalankan hingga selesai.

Secara default, iterator perulangan diberi nama item. Anda dapat mengubah nama variabel iterator di kotak ForEach di perancang aktivitas ParallelForEach<T>. Iterator perulangan dapat digunakan dalam ekspresi pada anak-anak aktivitas ParallelForEach<T>.

Baca juga