স্লাকস এবং কিলারক্যামের উত্তরগুলি ভাল; আমি ভেবেছিলাম আমি আরও কিছু প্রসঙ্গ যুক্ত করব।
আপনার প্রথম প্রশ্নটি কী কী পদ্ধতিতে চিহ্নিত করা যায় সে সম্পর্কে মূলত async
।
একটি পদ্ধতি হিসেবে চিহ্নিত async
আসতে পারেন void
, Task
অথবা Task<T>
। তাদের মধ্যে পার্থক্য কি কি?
একটি Task<T>
ফেরার ASYNC পদ্ধতি প্রতীক্ষিত হতে পারে, এবং যখন টাস্ক সমাপ্ত এটি একটি টি আপ দিতে চাওয়া হবে
একটি Task
রিটার্নিং অ্যাসিঙ্ক পদ্ধতিটি অপেক্ষা করা যেতে পারে এবং যখন টাস্কটি সম্পূর্ণ হয়, কাজটির ধারাবাহিকতাটি চালানোর জন্য নির্ধারিত হয়।
একটি void
ফেরার ASYNC পদ্ধতি প্রতীক্ষিত করা যায় না; এটি একটি "আগুন এবং ভুলে যাও" পদ্ধতি is এটি তাত্পর্যপূর্ণভাবে কাজ করে এবং এটি হয়ে গেলে আপনার বলার কোনও উপায় নেই। এটি কিছুটা অদ্ভুতের চেয়ে বেশি; যেমন স্লাকস বলেছে, সাধারণত অ্যাসিঙ্ক্রোনাস ইভেন্ট হ্যান্ডলার তৈরি করার সময় আপনি কেবল তা করতে পারেন। ইভেন্টটি দগ্ধ হয়, হ্যান্ডলার কার্যকর করে; ইভেন্ট হ্যান্ডলার দ্বারা ফিরে আসা কাজটি কেউ "অপেক্ষা" করতে যাচ্ছে না কারণ ইভেন্ট হ্যান্ডলাররা টাস্কগুলি ফিরিয়ে দেয় না এবং এমনকি যদি তা করে থাকে তবে কোন কোড কোনও কিছুর জন্য টাস্কটি ব্যবহার করবে? এটি সাধারণত ব্যবহারকারীর কোড নয় যা হ্যান্ডলারে নিয়ন্ত্রণ প্রথম স্থানে স্থানান্তর করে।
আপনার দ্বিতীয় প্রশ্ন, একটি মন্তব্যে মূলত কী সম্পাদনা করা যেতে পারে তা সম্পর্কে await
:
কি ধরণের পদ্ধতি await
এড করা যেতে পারে ? একটি শূন্য-ফিরে পদ্ধতি কি await
এডিট করা যেতে পারে ?
না, একটি অকার্যকর-প্রত্যাবর্তন পদ্ধতি অপেক্ষা করা যায় না। সংকলক await M()
একটি কলটিতে অনুবাদ করে M().GetAwaiter()
, যেখানে GetAwaiter
কোনও উদাহরণ পদ্ধতি বা কোনও এক্সটেনশন পদ্ধতি হতে পারে। প্রতীক্ষিত মানটি এমন একটি হতে হবে যার জন্য আপনি একটি দর্শনার্থী পেতে পারেন; স্পষ্টত একটি শূন্য-ফেরত পদ্ধতি একটি মান উত্পাদন করে না যা থেকে আপনি একটি দর্শনার্থী পেতে পারেন।
Task
পুনরুদ্ধার পদ্ধতি অপেক্ষাকৃত মান তৈরি করতে পারে। আমরা প্রত্যাশা করি যে তৃতীয় পক্ষগুলি তাদের পছন্দ Task
মতো বস্তুর নিজস্ব বাস্তবায়ন তৈরি করতে চাইবে যা আপনি অপেক্ষা করতে পারবেন এবং আপনি তাদের জন্য অপেক্ষা করতে সক্ষম হবেন। যাইহোক, আপনাকে async
এমন পদ্ধতিগুলি ঘোষণার অনুমতি দেওয়া হবে না যা কেবল বা void
, ছাড়া কিছু ফেরত দেয় ।Task
Task<T>
(আপডেট): আমার শেষ বাক্যটি সি # এর ভবিষ্যতের সংস্করণ দ্বারা মিথ্যা বলা যেতে পারে; অ্যাসিঙ্ক পদ্ধতির জন্য টাস্ক টাইপ ব্যতীত অন্যান্য রিটার্নের ধরণের অনুমতি দেওয়ার প্রস্তাব রয়েছে।)
(আপডেট: উপরে উল্লিখিত বৈশিষ্ট্যটি এটি সি # 7. এ তৈরি করেছে)