আফাইক, এটি সমস্ত জানেন যে কোনও এক সময়ে, তার SetResult
বা SetException
পদ্ধতিটিকে Task<T>
তার Task
সম্পত্তির মাধ্যমে উন্মুক্তকরণটি সম্পূর্ণ করার জন্য বলা হচ্ছে ।
অন্য কথায়, এটি একটি Task<TResult>
এবং এর সমাপ্তির জন্য প্রযোজক হিসাবে কাজ করে ।
আমি উদাহরণ এখানে দেখেছি :
অ্যাসিঙ্ক্রোনালিভাবে আমার একটি ফানক চালানোর কোনও উপায়ের প্রয়োজন এবং সেই ক্রিয়াকলাপটি উপস্থাপন করার জন্য কোনও টাস্ক লাগলে have
public static Task<T> RunAsync<T>(Func<T> function)
{
if (function == null) throw new ArgumentNullException(“function”);
var tcs = new TaskCompletionSource<T>();
ThreadPool.QueueUserWorkItem(_ =>
{
try
{
T result = function();
tcs.SetResult(result);
}
catch(Exception exc) { tcs.SetException(exc); }
});
return tcs.Task;
}
যা আমার কাছে না থাকলে * ব্যবহৃত হতে পারে Task.Factory.StartNew
- তবে আমার কাছে আছে Task.Factory.StartNew
।
প্রশ্ন:
কেউ উদাহরণ দ্বারা সম্পর্কিত একটি দৃশ্যকল্প ব্যাখ্যা দয়া করে করতে পারেন সরাসরি করতে TaskCompletionSource
একটি প্রয়োজন এবং না প্রকল্পিত যা আমার নেই অবস্থা Task.Factory.StartNew
?