দ্বিতীয় পদ্ধতিটি, Task.Run.NET ফ্রেমওয়ার্কের (সংস্করণ .NET 4.5) পরবর্তী সংস্করণে চালু করা হয়েছে।
যাইহোক, প্রথম পদ্ধতিটি, Task.Factory.StartNewআপনাকে যে থ্রেডটি তৈরি করতে চান তার সম্পর্কে প্রচুর দরকারী জিনিস সংজ্ঞা দেওয়ার সুযোগ দেয়, যখন এটি সরবরাহ Task.Runকরে না।
উদাহরণস্বরূপ, ধরুন যে আপনি একটি দীর্ঘ চলমান টাস্ক থ্রেড তৈরি করতে চান। এই কাজের জন্য যদি থ্রেড পুলের কোনও থ্রেড ব্যবহার করা হয়, তবে এটি থ্রেড পুলের অপব্যবহার হিসাবে বিবেচিত হতে পারে।
এটি এড়াতে আপনি যা করতে পারেন তা হ'ল কাজটি আলাদা থ্রেডে চালানো। একটি নতুন তৈরি থ্রেড যা এই কাজের জন্য নিবেদিত হবে এবং আপনার কাজটি শেষ হয়ে গেলে তা ধ্বংস হয়ে যাবে। আপনি করতে পারবেন না সঙ্গে এই অর্জন Task.Run, যখন আপনার সাথে তা করতে পারেন Task.Factory.StartNewনিচের মত:
Task.Factory.StartNew(..., TaskCreationOptions.LongRunning);
যেমনটি এখানে বলা হয়েছে :
সুতরাং, .NET ফ্রেমওয়ার্ক 4.5 বিকাশকারী পূর্বরূপে, আমরা নতুন Task.Run পদ্ধতিটি চালু করেছি। এটি কোনওভাবেই টাস্ক.ফ্যাক্টরি.স্টার্টনউকে অচল করে না,
বরং কেবলমাত্র প্যারামিতিগুলির একগুচ্ছ নির্দিষ্টকরণের প্রয়োজন ছাড়াই
টাস্ক.ফ্যাক্ট্রি.স্টার্টনিউ ব্যবহার করার দ্রুত উপায় হিসাবে ভাবা উচিত । এটি একটি শর্টকাট। প্রকৃতপক্ষে, Task.Run আসলে টাস্ক.ফ্যাক্টরি.স্টার্টনিউয়ের জন্য ব্যবহৃত একই যুক্তির পরিপ্রেক্ষিতে বাস্তবায়িত হয়, কিছু ডিফল্ট প্যারামিটারে কেবল উত্তীর্ণ হয়। আপনি যখন কোনও অ্যাকশন টাস্কে পাস করেন un
Task.Run(someAction);
এটি ঠিক সমান:
Task.Factory.StartNew(someAction,
CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default);
StartNewডিফল্ট ব্যবহারের দ্বারা হয়TaskScheduler.Currentযা থ্রেড পুল হতে পারে তবে ইউআই থ্রেডও হতে পারে।