আমি যদি এখানে লাইনগুলির মধ্যে সঠিকভাবে পড়ছি, তবে সমস্যাটি হ'ল আপনার ব্যতিক্রম কার্যকরভাবে 'অদৃশ্য হয়ে যাবে' যদিও ডিফল্ট ডিবাগারের আচরণটি হাতছাড়া হওয়া ব্যতিক্রমগুলির উপর ভেঙে যেতে পারে।
যদি আপনার অ্যাসিনক্রোনাস পদ্ধতি থাকে তবে আপনি এই সমস্যাটিতে চলেছেন কারণ কোনও টাস্ক ধারাবাহিকতার অংশ হিসাবে থ্রেড পুলের থ্রেডে ধরা পড়া ব্যতিক্রমগুলি হ্যান্ডেলড ব্যতিক্রম হিসাবে বিবেচিত নয়। বরং এগুলি গ্রাস করে টাস্কের সাথে সংরক্ষণ করা হয়।
উদাহরণস্বরূপ, এই কোডটি একবার দেখুন:
class Program
{
static void Main(string[] args)
{
Test();
Console.ReadLine();
}
private async static Task Test()
{
await Task.Delay(100);
throw new Exception("Exception!");
}
}
আপনি যদি এই প্রোগ্রামটি ডিফল্ট ডিবাগার সেটিংস দিয়ে চালান (কেবলমাত্র অপরিশোধিত ব্যতিক্রমগুলি থামান), তবে ডিবাগারটি ভাঙ্গবে না। এটি কারণ ধারাবাহিকতায় বরাদ্দ করা থ্রেড পুল থ্রেড ব্যতিক্রমটিকে গ্রাস করে (এটি টাস্কের উদাহরণে পাস করে) এবং পুলটিতে আবার মুক্তি দেয়।
মনে রাখবেন যে, এই ক্ষেত্রে আসল সমস্যাটি হ'ল Task
প্রত্যাবর্তিত Test()
কখনই পরীক্ষা করা হয় না। আপনার কোডে যদি একই ধরণের 'ফায়ার-এন্ড-ভুলে' যুক্তি থাকে তবে তা নিক্ষেপ করার সময় আপনি ব্যতিক্রমগুলি দেখতে পাবেন না (এমনকি তারা পদ্ধতির অভ্যন্তরে 'নিয়ন্ত্রণহীন' হলেও); ব্যতিক্রমটি কেবল তখনই প্রদর্শিত হয় যখন আপনি টাস্কটির জন্য অপেক্ষা করে, এর ফলাফলগুলি পরীক্ষা করে বা স্পষ্টভাবে তার ব্যতিক্রমটি দেখে পর্যবেক্ষণ করে।
এটি কেবল অনুমান, তবে আমি মনে করি সম্ভবত আপনি এটির মতো কিছু পর্যবেক্ষণ করছেন।
Tool
বাWindow
ট্যাবটি না থাকলে সমস্ত পছন্দসই অবস্থান থাকতে পারে। আপনার ক্ষেত্রে আপনার ব্যতিক্রম সেটিংস অনুসন্ধান করা ।