Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya boleh menggunakan async/menunggu dengan paralel.foreach untuk panggilan WCF serentak?

Bagaimanakah saya boleh menggunakan async/menunggu dengan paralel.foreach untuk panggilan WCF serentak?

Susan Sarandon
Lepaskan: 2025-02-01 03:02:09
asal
815 orang telah melayarinya

How Can I Safely Use Async/Await with Parallel.ForEach for Concurrent WCF Calls?

mengendalikan panggilan WCF serentak menggunakan async/menunggu dan tpl dataflow

Artikel ini menangani cabaran dengan selamat dan efisien melaksanakan pelbagai panggilan WCF yang tidak segerak serentak dalam aplikasi .NET. Pendekatan naif bersarang

dalam await sering membawa kepada penamatan pramatang dan operasi tidak lengkap. Parallel.ForEach

Penyelesaian: TPL Dataflow

Penyelesaian yang disyorkan memanfaatkan kerangka Dataflow Perpustakaan Tugas Paralel (TPL). Khususnya, menggunakan

dan TransformBlock menyediakan mekanisme yang mantap dan terkawal untuk operasi asynchronous selari. ActionBlock

Contoh kod refactored

Kod berikut menunjukkan cara refactor kod asal untuk menggunakan

dan TransformBlock untuk panggilan WCF serentak: ActionBlock

<code class="language-csharp">var ids = new List<string> { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" };

var getCustomerBlock = new TransformBlock<string, Customer>(
    async i =>
    {
        ICustomerRepo repo = new CustomerRepo();
        return await repo.GetCustomer(i);
    }, new ExecutionDataflowBlockOptions
    {
        MaxDegreeOfParallelism = DataflowBlockOptions.Unbounded // Or specify a limit
    });

var writeCustomerBlock = new ActionBlock<Customer>(c => Console.WriteLine(c.ID));

getCustomerBlock.LinkTo(writeCustomerBlock, new DataflowLinkOptions { PropagateCompletion = true });

foreach (var id in ids)
{
    getCustomerBlock.Post(id);
}

getCustomerBlock.Complete();
writeCustomerBlock.Completion.Wait();</code>
Salin selepas log masuk
faedah pendekatan ini

Pendekatan ini menawarkan beberapa kelebihan utama:

  • Paralelisme Asynchronous Benar: Ia betul mengendalikan operasi asynchronous dalam konteks selari, mencegah penamatan pramatang.
  • Kecekapan yang lebih baik: Hasil diproses kerana ia tersedia, dan bukannya menunggu semua operasi selesai.
  • Skalabilitas dan kawalan: Hartanah membolehkan mengawal tahap kesesuaian, mencegah keletihan sumber. Ini penting apabila berurusan dengan sebilangan besar ID. MaxDegreeOfParallelism
Kaedah ini memastikan bahawa panggilan WCF tak segerak dilaksanakan secara serentak sambil mengekalkan pengendalian ralat yang betul dan pengurusan sumber, menyediakan penyelesaian yang lebih dipercayai dan cekap.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan async/menunggu dengan paralel.foreach untuk panggilan WCF serentak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan