আমার মতে মাইক্রোসফ্ট ডকুমেন্টেশন থেকে সত্যটি অস্পষ্ট:
ভিজ্যুয়াল স্টুডিও ২০১২ এবং। নেট ফ্রেমওয়ার্ক ৪.৫-এ, async
কীওয়ার্ড ( Async
ভিজ্যুয়াল বেসিক) এর সাথে যুক্ত যে কোনও পদ্ধতি অ্যাসিক্রোনাস পদ্ধতি হিসাবে বিবেচিত হয় এবং সি # এবং ভিজ্যুয়াল বেসিক সংকলকগুলি ট্যাপটি ব্যবহার করে অ্যাসিক্রোনালি পদ্ধতিতে প্রয়োজনীয় রূপান্তরগুলি সম্পাদন করে। একটি অ্যাসিঙ্ক্রোনাস পদ্ধতিতে হয় কোনও Task
বা কোনও Task<TResult>
বস্তুর প্রত্যাবর্তন করা উচিত ।
http://msdn.microsoft.com/en-us/library/hh873177(v=vs.110).aspx
ইতিমধ্যে এটি ঠিক নেই। এর সাথে যে কোনও পদ্ধতি async
অ্যাসিনক্রোনাস এবং তারপরে বলা উচিত এটি একটি Task
বা Task<T>
- ফিরে আসতে হবে যা কল স্ট্যাকের শীর্ষে পদ্ধতিগুলির জন্য সঠিক নয়, উদাহরণস্বরূপ বাটন_ ক্লিক করুন বা async void
।
অবশ্যই, আপনাকে বিবেচনা করতে হবে যে সম্মেলনের মূল বক্তব্যটি কী?
আপনি বলতে পারেন যে Async
প্রত্যয়ী কনভেনশনটি এপিআই ব্যবহারকারীদের সাথে যোগাযোগ করা যে পদ্ধতিটি প্রতীক্ষিত। কোনও পদ্ধতির প্রতীক্ষিত হওয়ার জন্য, এটি অবশ্যই Task
একটি শূন্যতার জন্য ফিরে আসতে হবে , বা Task<T>
একটি মান-ফেরতের পদ্ধতির জন্য, যার অর্থ কেবলমাত্র পরবর্তীটিই প্রত্যয়যুক্ত হতে পারে Async
।
অথবা আপনি বলতে পারেন যে Async
প্রত্যয় সম্মেলনটি যোগাযোগ করার জন্য যে পদ্ধতিটি তাত্ক্ষণিকভাবে ফিরে আসতে পারে, বর্তমান থ্রেডটিকে অন্য কাজ সম্পাদন করতে এবং সম্ভাব্যভাবে দৌড় সৃষ্টির জন্য ত্যাগ করে।
এই মাইক্রোসফ্ট ডকের উক্তিটি বলে:
কনভেনশন দ্বারা, আপনি যে পদ্ধতিগুলির মধ্যে একটি অ্যাসিঙ্ক বা অ্যাসিঙ্ক সংশোধক রয়েছে তার নামগুলিতে "অ্যাসিঙ্ক" যুক্ত করুন।
http://msdn.microsoft.com/en-us/library/hh191443.aspx#BKMK_NamingConvention
যা এমনকি এটি উল্লেখ করে না যে আপনার নিজস্ব অ্যাসিক্রোনাস পদ্ধতিগুলি ফিরে আসার প্রত্যয় Task
প্রয়োজন Async
, যা আমি মনে করি আমরা সকলেই তারা তা করতে সম্মত।
সুতরাং এই প্রশ্নের উত্তর হতে পারে: উভয়ই। উভয় ক্ষেত্রেই, আপনি যোগ করতে হবে Async
সঙ্গে পদ্ধতি async
শব্দ এবং যে রিটার্ন Task
বা Task<T>
।
আমি স্টিফেন টুবকে পরিস্থিতি স্পষ্ট করতে বলছি।
হালনাগাদ
তাই আমি. এবং আমাদের উত্তম ব্যক্তি যা লিখেছেন তা এখানে:
যদি কোনও পাবলিক পদ্ধতিটি টাস্ক-রিটার্নিং হয় এবং প্রকৃতিতে অ্যাসক্রোনাস হয় (এমন একটি পদ্ধতির বিপরীতে যা সর্বদা সিঙ্ক্রোনালি সমাপ্তির জন্য কার্যকর হয় তবে কোনও কারণে কোনও টাস্ক ফেরত দেয়), এটির একটি "অ্যাসিঙ্ক" প্রত্যয় থাকা উচিত। এটাই গাইডলাইন। নামকরণের সাথে এখানে প্রাথমিক লক্ষ্যটি কার্যকারিতার একজন গ্রাহকের কাছে এটি খুব স্পষ্ট করে দেওয়া যে পদ্ধতিটি আহ্বান করা হচ্ছে সম্ভবত এটি তার সমস্ত কাজ সিঙ্ক্রোনজভাবে সম্পন্ন করবে না; এটি অবশ্যই সেই ক্ষেত্রে সাহায্য করে যেখানে কার্যকারিতা উভয় সিঙ্ক্রোনাস এবং অ্যাসিনক্রোনাস পদ্ধতির সাথেই উদ্ভাসিত হয় যাতে তাদের আলাদা করার জন্য আপনার নামের পার্থক্য প্রয়োজন। পদ্ধতিটি কীভাবে তার অ্যাসিনক্রোনাস বাস্তবায়ন অর্জন করে তা নামকরণের জন্য অবিরাম: অসম্পূর্ণ / প্রতীক্ষা সংকলকটির সহায়তা সংগ্রহ করতে ব্যবহৃত হয়, অথবা সিস্টেম.তন্ত্রকরণ থেকে প্রকার এবং পদ্ধতি কিনা তা সরাসরি ব্যবহার করা হয় (ই। ছ। টাস্ক কমপ্লিশনসোর্স) আসলেই কিছু যায় আসে না কারণ এটি পদ্ধতিটির গ্রাহক হিসাবে যতক্ষণ না পদ্ধতিটির স্বাক্ষরকে প্রভাবিত করে না।
অবশ্যই, গাইডলাইনটিতে সর্বদা ব্যতিক্রম রয়েছে। নামকরণের ক্ষেত্রে সর্বাধিক উল্লেখযোগ্য একটি হ'ল কেসগুলি যেখানে পুরো টাইপের রাইসন ডি'ইটি হ'ল অ্যাসিঙ্ক-ফোকাসড কার্যকারিতা সরবরাহ করা, সেই ক্ষেত্রে প্রতিটি পদ্ধতিতে অ্যাসিঙ্ক থাকা অত্যধিক কিল হতে পারে, যেমন টাস্কের নিজস্ব পদ্ধতি যা অন্যান্য টাস্ক তৈরি করে itself ।
অকার্যকর-প্রত্যাবর্তনকারী অ্যাসিক্রোনাস পদ্ধতিগুলি হিসাবে, জনসাধারণের তলদেশে থাকাগুলি থাকা বাঞ্ছনীয় নয়, কারণ অ্যাসিক্রোনাস কাজটি কখন সম্পন্ন হয়েছে the কলকারীর জানার কোনও ভাল উপায় নেই। যদি আপনাকে অবশ্যই প্রকাশ্যে একটি অকার্যকর-ফেরত অ্যাসিক্রোনাস পদ্ধতি প্রকাশ করতে হবে তবে আপনার সম্ভবত এমন একটি নাম থাকতে হবে যা বোঝায় যে অ্যাসিঙ্ক্রোনাস কাজ শুরু হচ্ছে এবং আপনি যদি "অ্যাসিঙ্ক" প্রত্যয়টি বোধগম্য হন তবে এটি ব্যবহার করতে পারেন। এই কেসটি কতটা বিরল হওয়া উচিত, তা বিবেচনা করে আমি যুক্তি দিয়ে বলছি এটি সত্যিই কেস বাই কেস জাতীয় সিদ্ধান্ত।
আমি আশা করি যে সাহায্য করে, স্টিভ
স্টিফেনের খোলার বাক্য থেকে সংক্ষিপ্ত দিকনির্দেশনা যথেষ্ট স্পষ্ট। এটি বাদ দেয় async void
কারণ এই জাতীয় নকশার দ্বারা একটি সর্বজনীন এপিআই তৈরি করা অস্বাভাবিক কারণ যেহেতু অ্যাসিঙ্ক্রোনাস শূন্যতা বাস্তবায়নের সঠিক উপায়টি একটি সরল Task
দৃষ্টান্ত ফিরে আসে এবং সংকলকটিকে তার যাদুতে যেতে দেয়। তবে, যদি আপনি একটি চান না public async void
, তবে সংযোজনের Async
পরামর্শ দেওয়া হয়। স্ট্যাকের অন্যান্য শীর্ষ async void
পদ্ধতি যেমন ইভেন্ট হ্যান্ডলারগুলি সাধারণত পাবলিক হয় না এবং কোনও বিষয় / যোগ্যতা রাখে না।
আমার জন্য, এটি আমাকে বলেছে যে আমি যদি নিজেকে অনায়াসে অনুভব Async
করার বিষয়ে ভাবছিলাম তবে async void
আমার সম্ভবত এটি এটিকে এমন রূপান্তর করা উচিত async Task
যাতে কলকারীরা এটির জন্য অপেক্ষা করতে পারে, তারপরে সংযোজন করানো উচিত Async
।