سؤال

متعلق ب:


إذا قامت إحدى الطرق بطرح استثناءات يتم استدعاؤها بواسطة طريقة ThreadPool.QueueUserWorkItem، فأين سيتم طرح الاستثناء؟أم أنها سوف تؤكل فقط؟

أعني أنه لن يتم طرحه أبدًا على مؤشر ترابط الاتصال، أليس كذلك؟


هل كانت مفيدة؟

المحلول

لا، لن ينتشر الاستثناء أبدًا إلى مؤشر ترابط آخر.سيؤدي في النهاية إلى تعطل الخيط، وسيتم اكتشافه في وقت التشغيل.عند هذه النقطة، يقوم وقت التشغيل برفع الحدث AppDomain.UnhandledException حيث يمكن ملاحظة الاستثناء.

يمكنك قراءة المزيد عن هذا هنا.

نصائح أخرى

سيؤدي الاستثناء إلى تعطل تطبيقك إذا لم يتم اكتشافه داخل رد اتصال مؤشر الترابط الخاص بك (باستثناء ThreadAbortException وAppDomainUnloadedException اللذين تم ابتلاعهما).لاحظ أنه في .NET 1.1 تم ابتلاع كافة الاستثناءات.تم تغيير السلوك في .NET 2.0.

لقد وجدت هذا الرابط: http://msdn.microsoft.com/en-us/library/ms228965.aspx

ستؤدي الاستثناءات غير المعالجة إلى تعطيل التطبيق في الإصدار .Net 2.0 أو أعلى.لن يتم اكتشاف الاستثناء من كود QUWI أو نقله إلى مؤشر ترابط آخر.

انظر على سبيل المثال.https://blog.codinghorror.com/improved-unhandled-exception-behavior-in-net-20/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top