আমি জানি যে async void
কাজগুলি শুরু করার জন্য অগ্নি-বিস্মৃত পদ্ধতিগুলি ব্যবহার করা সাধারণত একটি খারাপ ধারণা হিসাবে বিবেচিত হয় , কারণ এখানে মুলতুবি থাকা কার্যটির কোনও ট্র্যাক নেই এবং ব্যতিক্রমগুলি পরিচালনা করা কৌশলগত কারণ এটি এই জাতীয় পদ্ধতির ভিতরে ফেলে দেওয়া হতে পারে।
আমারও কি সাধারণভাবে async void
ইভেন্ট হ্যান্ডলারগুলি এড়ানো উচিত ? উদাহরণ স্বরূপ,
private async void Form_Load(object sender, System.EventArgs e)
{
await Task.Delay(2000); // do async work
// ...
}
আমি এটি আবার লিখতে পারি:
Task onFormLoadTask = null; // track the task, can implement cancellation
private void Form_Load(object sender, System.EventArgs e)
{
this.onFormLoadTask = OnFormLoadTaskAsync(sender, e);
}
private async Task OnFormLoadTaskAsync(object sender, System.EventArgs e)
{
await Task.Delay(2000); // do async work
// ...
}
সম্ভাব্য পুনরায় প্রবেশের পাশাপাশি অ্যাসিঙ্ক ইভেন্ট হ্যান্ডলারের জন্য জলের নীচে শিলাগুলি কী কী?