আমার একটি async
পদ্ধতি রয়েছে যা কোনও ডেটা ফেরত দেয় না:
public async Task MyAsyncMethod()
{
// do some stuff async, don't return any data
}
আমি এটিকে অন্য পদ্ধতি থেকে কল করছি যা কিছু ডেটা দেয়:
public string GetStringData()
{
MyAsyncMethod(); // this generates a warning and swallows exceptions
return "hello world";
}
কলিং MyAsyncMethod()
অপেক্ষা এটি একটি "কারণ ছাড়া যেহেতু এই কলে প্রতীক্ষিত করা হয় না, বর্তমান পদ্ধতি কল সম্পুর্ণ হওয়ার পূর্বে চালানোর চলতে চাক্ষুষ স্টুডিওতে সাবধানবাণী"। সেই সতর্কতার জন্য পৃষ্ঠায় এটি উল্লেখ করেছে:
আপনার কেবলমাত্র সতর্কতা দমন করার কথা বিবেচনা করা উচিত যদি আপনি নিশ্চিত হন যে আপনি অ্যাসিক্রোনাস কলটি শেষ হওয়ার অপেক্ষায় থাকতে চান না এবং তথাপি পদ্ধতিটি কোনও ব্যতিক্রম উত্থাপন করবে না ।
আমি নিশ্চিত আমি কলটি শেষ হওয়ার অপেক্ষা করতে চাই না; আমার দরকার নেই বা সময় লাগবে না। কিন্তু কলটি ব্যতিক্রম বাড়িয়ে তুলতে পারে ।
আমি এই সমস্যাটিতে কয়েকবার হোঁচট খেয়েছি এবং আমি নিশ্চিত যে এটি একটি সাধারণ সমস্যা যার একটি সাধারণ সমাধান অবশ্যই হবে।
ফলাফলের অপেক্ষা না করে আমি কীভাবে নিরাপদে একটি অ্যাসিঙ্ক পদ্ধতিতে কল করব?
হালনাগাদ:
লোকেরা আমাকে পরামর্শ দিচ্ছে যে আমি কেবল ফলাফলটির জন্য অপেক্ষা করছি, এটি এমন কোড যা আমাদের ওয়েব পরিষেবাদিতে (এএসপি.নেট ওয়েব এপিআই) ওয়েব অনুরোধের প্রতিক্রিয়া জানায়। কোনও ইউআই প্রসঙ্গে অপেক্ষা করা ইউআই থ্রেডকে মুক্ত রাখে, তবে ওয়েব অনুরোধ কলের অপেক্ষায় অনুরোধটির প্রতিক্রিয়া জানার আগে টাস্কটি শেষ হওয়ার অপেক্ষায় থাকবে, যার ফলে বিনা কারণে প্রতিক্রিয়া বার বাড়বে।
MyAsyncMethod().Wait()