আমি বর্তমানে স্টিফেন ক্লিয়ারির " সি # কুকবুক ইন কনকুরেন্সি " পড়ছি এবং আমি নিম্নলিখিত কৌশলটি লক্ষ্য করেছি:
var completedTask = await Task.WhenAny(downloadTask, timeoutTask);
if (completedTask == timeoutTask)
return null;
return await downloadTask;
downloadTask
এটিতে একটি কল httpclient.GetStringAsync
, এবং timeoutTask
কার্যকর করা হচ্ছে Task.Delay
।
ঘটনাটি শেষ না হয়ে গেলে downloadTask
ইতিমধ্যে সম্পূর্ণ হয়ে গেছে। downloadTask.Result
কাজটি ইতিমধ্যে সম্পন্ন হয়ে গেছে কেন, ফেরার পরিবর্তে দ্বিতীয় প্রতীক্ষার প্রয়োজন কেন ?
AggregateException
সঙ্গে Result
মাধ্যমে বনাম প্রথম ব্যতিক্রম ExceptionDispatchInfo
সঙ্গে await
)। স্টিফেন টুবের "টাস্ক এক্সেপশন হ্যান্ডলিং ইন। নেট 4.5": ব্লগস.এমএসএনএন / বি / পিএফএক্সটিয়াম / আর্কাইভ / ২০১৮ / ২৯ / ২৮ )
downloadTask
এবংtimeoutTask
? তারা কি করে?