যদি আপনি কোনও টাস্ক তৈরি করেন এবং আপনি কখনই কল task.Wait()
বা কোনওটির ফলাফল পুনরুদ্ধারের চেষ্টা না করেন Task<T>
, যখন আবর্জনা সংগ্রহকারী দ্বারা কাজটি সংগ্রহ করা হয়, এটি চূড়ান্তকরণের সময় আপনার আবেদনটি ছিন্ন করে। বিশদর জন্য, টিপিএলে ব্যতিক্রম হ্যান্ডলিংয়ের উপর এমএসডিএন এর পৃষ্ঠাটি দেখুন ।
এখানে সর্বোত্তম বিকল্পটি ব্যতিক্রমটি "পরিচালনা" করা। এটি একটি ধারাবাহিকতার মাধ্যমে করা যেতে পারে - আপনি টাস্কের সাথে একটি ধারাবাহিকতা সংযুক্ত করতে পারেন এবং লগ / গেলা / ইত্যাদি ব্যতিক্রম ঘটে। এটি টাস্ক ব্যতিক্রমগুলিকে লগ করার জন্য একটি পরিষ্কার উপায় সরবরাহ করে এবং এটি একটি সাধারণ এক্সটেনশন পদ্ধতি হিসাবে লেখা যেতে পারে, যেমন:
public static void LogExceptions(this Task task)
{
task.ContinueWith( t =>
{
var aggException = t.Exception.Flatten();
foreach(var exception in aggException.InnerExceptions)
LogException(exception);
},
TaskContinuationOptions.OnlyOnFaulted);
}
উপরের সাহায্যে আপনি যে কোনও কাজ অ্যাপটি ছিঁড়ে ফেলা এবং এটি লগ করা থেকে রোধ করতে পারেন:
Task.Factory.StartNew( () =>
{
// Do your work...
}).LogExceptions();
বিকল্পভাবে, আপনি টাস্কশুলেডারঅনোব্রেটেড টাস্কএক্সসেপশন সাবস্ক্রাইব করতে পারেন এবং এটি সেখানে পরিচালনা করতে পারেন ।
Off
আপনার পছন্দের চার-বর্ণের শব্দ নামে একটি শ্রেণিতে একটি স্ট্যাটিক স্টাব পদ্ধতি রাখুন এবং এটি আপনার ক্যাচ-অল ক্রমাগত জন্য ব্যবহার করুন। এই বিশেষ ব্যতিক্রম থেকে কিছু পেন্ট-আপ হতাশার বিরুদ্ধে লড়াই করতে সহায়তা করে।