উভয় উত্তর অপেক্ষারত Task.WhenAll
:
var task1 = DoWorkAsync();
var task2 = DoMoreWorkAsync();
await Task.WhenAll(task1, task2);
Task.WaitAll
এবং এর মধ্যে প্রধান পার্থক্য Task.WhenAll
হ'ল প্রাক্তনটি ( Wait
একক টাস্ক ব্যবহারের অনুরূপ) অবরুদ্ধ হয়ে যাবে, তবে পরবর্তীকালে সমস্ত কাজ শেষ না হওয়া অবধি কলারের কাছে নিয়ন্ত্রণ জোগানো হবে না এবং অপেক্ষা করা যাবে না।
আরও তাই, ব্যতিক্রম হ্যান্ডলিং পৃথক:
Task.WaitAll
:
কমপক্ষে একটি টাস্ক ইনস্ট্যান্স বাতিল করা হয়েছিল - বা কমপক্ষে একটি টাস্ক ইনস্ট্যান্সের কার্যকর করার সময় একটি ব্যতিক্রম ছুঁড়ে দেওয়া হয়েছিল। যদি কোনও কাজ বাতিল করা হয়ে থাকে, সমষ্টিগত ধারণাটিতে তার অন্তর্ভুক্তি সংগ্রহের মধ্যে একটি অপারেশন-ক্যান্সেলড এক্সসেপশন রয়েছে।
Task.WhenAll
:
সরবরাহকৃত কোনও কাজ যদি একটি ত্রুটিযুক্ত অবস্থায় সম্পূর্ণ হয় তবে প্রত্যাবর্তিত টাস্কটি একটি ত্রুটিযুক্ত অবস্থায়ও পূর্ণ হবে, যেখানে এর ব্যতিক্রমগুলিতে সরবরাহিত প্রতিটি কাজ থেকে আন-র্যাপযুক্ত ব্যতিক্রমগুলির সংস্থার সংমিশ্রণ থাকবে।
যদি সরবরাহিত কোনও কাজই ত্রুটিযুক্ত না হয় তবে তাদের মধ্যে কমপক্ষে একটি বাতিল করা হয় তবে প্রত্যাবর্তিত কার্যটি বাতিল হওয়া অবস্থায় শেষ হবে।
যদি কোনও কাজই ত্রুটিযুক্ত না হয় এবং কোনও একটি কাজ বাতিল না করা হয়, তবে ফলাফলটি রানটোকম্প্লেশন অবস্থায় শেষ হবে। যদি সরবরাহ করা অ্যারে / গণনার কোনও কাজ না করে থাকে তবে ফিরে আসা টাস্কটি কলারে ফিরে আসার আগেই তাৎক্ষণিকভাবে একটি র্যানটোকম্প্লেশন রাজ্যে স্থানান্তরিত হবে।
await Task.WhenAll(task1, task2);
?