مشاركة عبر


إتلاف عمليات جزئية

Abortالأسلوب هو المستخدم لإيقاف مؤشر ترابط مدارة بشكل دائم. عندما تقوم باستدعاء Abort، يطرح وقت تشغيل اللغة العامة ThreadAbortExceptionفي مؤشر ترابط الهدف، والتي يمكن أن مؤشر ترابط الهدف catch. لمزيد من المعلومات، راجع Thread.Abort.

ملاحظةملاحظة

حالة مؤشر الترابط هو تنفيذ غير مدارة تعليمات برمجية عند به Abortأسلوب هو يسمى، وقت التشغيل يضع عليه ThreadState.AbortRequested.‏‏ استثناء هو طرح عند إرجاع مؤشر ترابط لتعليمات برمجية تمت إدارتها.

بمجرد أن يتم إحباط مؤشر ترابط، فإنه لا يمكن إعادة تشغيله.

Abortالأسلوب لا يؤدي مؤشر الترابط إلى إحباط مباشرة، لأنه يمكن التقاط مؤشر الترابط الهدف ThreadAbortExceptionوتنفيذها على كمية تحكمية من تعليمات برمجية في finallyحظر. يمكنك استدعاء Thread.Joinإذا كنت بحاجة إلى الانتظار حتى انتهاء مؤشر ترابط. Thread.Joinهو مكالمة منع الذي لا يرجع إلى أن توقف مؤشر ترابط فعلياً تنفيذ أو انقضاء الفاصل زمني لمهلة اختيارية. يمكن استدعاء مؤشر ترابط تم إحباطها ResetAbortأسلوب أو تنفيذ معالجة unbounded في finallyحظر، وذلك في حالة عدم تحديد مهلة، الانتظار هو لا يمكن ضمان للنهاية.

عمليات جزئية التي تنتظر تشغيل استدعاء Thread.Joinمقاطعة الأسلوب بواسطة غير ذلك عمليات جزئية هذا الاستدعاء Thread.Interrupt.

معالجة ThreadAbortException

إذا كنت تتوقع أن مؤشر ترابط الخاص بك إلى يتم إحباط، أما كنتيجة استدعاء Abortمن تعليمات برمجية الخاصة بك أو كنتيجة لإلغاء تحميل مجال تطبيق تشغيل مؤشر ترابط ( AppDomain.Unloadيستخدم Thread.Abortإلى ينهي عمليات جزئية)، يجب معالجة مؤشر ترابط الخاص بك ThreadAbortExceptionوتنفيذ أية معالجة النهائية في finallyالعبارة، كما هو مبين في تعليمات برمجية التالية.

Try
    ' Code that is executing when the thread is aborted.
Catch ex As ThreadAbortException
    ' Clean-up code can go here.
    ' If there is no Finally clause, ThreadAbortException is
    ' re-thrown by the system at the end of the Catch clause. 
Finally
    ' Clean-up code can go here.
End Try
' Do not put clean-up code here, because the exception 
' is rethrown at the end of the Finally clause.
try 
{
    // Code that is executing when the thread is aborted.
} 
catch (ThreadAbortException ex) 
{
    // Clean-up code can go here.
    // If there is no Finally clause, ThreadAbortException is
    // re-thrown by the system at the end of the Catch clause. 
}
// Do not put clean-up code here, because the exception 
// is rethrown at the end of the Finally clause.

يجب تنظيف تعليمات برمجية في catchجملة أو finallyالعبارة، لأن ThreadAbortExceptionهو rethrown بواسطة النظام في النهاية finallyجملة، أو في النهاية catchجملة إذا لم يكن هناك لا finallyجملة.

يمكنك منع النظام من rethrowing ‏‏ استثناء باستدعاء Thread.ResetAbortأسلوب. ومع ذلك، يجب القيام بذلك فقط إذا كانت التعليمة البرمجية الخاصة بك بسبب ThreadAbortException.

راجع أيضًا:

المرجع

ThreadAbortException

Thread

موارد أخرى

استخدام عمليات جزئية و مؤشر الترابط التشعبي