এটি "অপেক্ষা না করে C # তে নিরাপদে কোনও অ্যাসিঙ্ক পদ্ধতিতে কল করবেন কী" এর সদৃশ নয় ।
আমি নীচের সতর্কতাটি কীভাবে সুন্দরভাবে দমন করব?
সতর্কতা CS4014: যেহেতু এই কলটি প্রতীক্ষিত নয়, কলটি শেষ হওয়ার আগেই বর্তমান পদ্ধতির কার্যকরকরণ অব্যাহত রয়েছে। কলটির ফলাফলের জন্য 'অপেক্ষার' অপারেটর প্রয়োগের বিষয়টি বিবেচনা করুন।
একটি সহজ উদাহরণ:
static async Task WorkAsync()
{
await Task.Delay(1000);
Console.WriteLine("Done!");
}
static async Task StartWorkAsync()
{
WorkAsync(); // I want fire-and-forget
// more unrelated async/await stuff here, e.g.:
// ...
await Task.Delay(2000);
}
আমি যা চেষ্টা করেছি এবং পছন্দ করি না:
static async Task StartWorkAsync()
{
#pragma warning disable 4014
WorkAsync(); // I want fire-and-forget here
#pragma warning restore 4014
// ...
}
static async Task StartWorkAsync()
{
var ignoreMe = WorkAsync(); // I want fire-and-forget here
// ...
}
আপডেট হয়েছে , যেহেতু আসল স্বীকৃত উত্তরটি সম্পাদনা করা হয়েছে, আমি সি # 7.0 বিসর্জন ব্যবহার করে আমি উত্তরটি পরিবর্তিত করেছি , কারণ আমি ContinueWith
এখানে উপযুক্ত মনে করি না । যখনই আমার ফায়ার-ও-ভুলে যাওয়া অপারেশনের জন্য ব্যতিক্রমগুলি লগ করতে হবে, আমি এখানে স্টিফেন ক্লিয়ারি দ্বারা প্রস্তাবিত আরও বিস্তৃত পদ্ধতির ব্যবহার করি ।
async void
।
#pragma
সুন্দর মনে করেন না?