ThreadAbortException Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
yöntemine bir çağrı yapıldığında Abort(Object) oluşan özel durum. Bu sınıf devralınamaz.
public ref class ThreadAbortException sealed : SystemException
public sealed class ThreadAbortException : SystemException
[System.Serializable]
public sealed class ThreadAbortException : SystemException
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class ThreadAbortException : SystemException
type ThreadAbortException = class
inherit SystemException
[<System.Serializable>]
type ThreadAbortException = class
inherit SystemException
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ThreadAbortException = class
inherit SystemException
Public NotInheritable Class ThreadAbortException
Inherits SystemException
- Devralma
- Öznitelikler
Örnekler
Aşağıdaki örnekte bir iş parçacığının durdurulma işlemi gösterilmektedir. öğesini alan ThreadAbortException iş parçacığı, iptal isteğini iptal etmek ve yürütmeye devam etmek için yöntemini kullanır ResetAbort .
using System;
using System.Threading;
using System.Security.Permissions;
public class ThreadWork {
public static void DoWork() {
try {
for(int i=0; i<100; i++) {
Console.WriteLine("Thread - working.");
Thread.Sleep(100);
}
}
catch(ThreadAbortException e) {
Console.WriteLine("Thread - caught ThreadAbortException - resetting.");
Console.WriteLine("Exception message: {0}", e.Message);
Thread.ResetAbort();
}
Console.WriteLine("Thread - still alive and working.");
Thread.Sleep(1000);
Console.WriteLine("Thread - finished working.");
}
}
class ThreadAbortTest {
public static void Main() {
ThreadStart myThreadDelegate = new ThreadStart(ThreadWork.DoWork);
Thread myThread = new Thread(myThreadDelegate);
myThread.Start();
Thread.Sleep(100);
Console.WriteLine("Main - aborting my thread.");
myThread.Abort();
myThread.Join();
Console.WriteLine("Main ending.");
}
}
Imports System.Threading
Imports System.Security.Permissions
Public Class ThreadWork
Public Shared Sub DoWork()
Try
Dim i As Integer
For i = 0 To 99
Console.WriteLine("Thread - working.")
Thread.Sleep(100)
Next i
Catch e As ThreadAbortException
Console.WriteLine("Thread - caught ThreadAbortException - resetting.")
Console.WriteLine("Exception message: {0}", e.Message)
Thread.ResetAbort()
End Try
Console.WriteLine("Thread - still alive and working.")
Thread.Sleep(1000)
Console.WriteLine("Thread - finished working.")
End Sub
End Class
Class ThreadAbortTest
Public Shared Sub Main()
Dim myThreadDelegate As New ThreadStart(AddressOf ThreadWork.DoWork)
Dim myThread As New Thread(myThreadDelegate)
myThread.Start()
Thread.Sleep(100)
Console.WriteLine("Main - aborting my thread.")
myThread.Abort()
myThread.Join()
Console.WriteLine("Main ending.")
End Sub
End Class
Bu kod aşağıdaki çıkışı oluşturur:
Thread - working.
Main - aborting my thread.
Thread - caught ThreadAbortException - resetting.
Exception message: Thread was being aborted.
Thread - still alive and working.
Thread - finished working.
Main ending.
Açıklamalar
Bir iş parçacığını Abort yok etmek için yöntemine bir çağrı yapıldığında, ortak dil çalışma zamanı .NET Framework üzerinde bir ThreadAbortException oluşturur.
ThreadAbortException yakalanabilecek özel bir özel durumdur, ancak bloğun catch sonunda otomatik olarak yeniden tetiklenir. Bu özel durum oluştuğunda, çalışma zamanı iş parçacığını finally sonlandırmadan önce tüm blokları yürütür. İş parçacığı bloklarda finally ilişkisiz bir hesaplama gerçekleştirebildiğinden veya iptali iptal etmek için çağrısı Thread.ResetAbort gerçekleştirebildiğinden, iş parçacığının sona ereceği garanti edilemez. Durdurulan iş parçacığının sona ermesini beklemek istiyorsanız yöntemini çağırabilirsiniz Thread.Join .
Join , iş parçacığı gerçekten yürütmeyi durdurana kadar döndürülmeyen bir engelleme çağrısıdır.
Uyarı
Yalnızca .NET Core ve .NET 5+ : Bu tür .NET Core ve .NET 5+ içinde mevcut olsa da desteklenmediğinden Abort ortak dil çalışma zamanı oluşturmaz ThreadAbortException.
Uyarı
Yönetilen yürütülebilir dosyadaki tüm ön plan iş parçacıkları sona erdikten sonra ortak dil çalışma zamanı (CLR) arka plan iş parçacıklarını durdurduğunda kullanmaz Thread.Abort. Bu nedenle, arka plan iş parçacıklarının CLR tarafından ne zaman sonlandırıldığını algılamak için kullanamazsınız ThreadAbortException .
ThreadAbortException, değerine 0x80131530sahip olan öğesini kullanırHRESULT COR_E_THREADABORTED.
Uyarı
Devralınan Data özelliğin değeri her zaman nullşeklindedir.
Özellikler
| Name | Description |
|---|---|
| Data |
Özel durum hakkında kullanıcı tanımlı ek bilgiler sağlayan anahtar/değer çiftleri koleksiyonunu alır. (Devralındığı yer: Exception) |
| ExceptionState |
İş parçacığı iptali ile ilgili uygulamaya özgü bilgileri içeren bir nesne alır. |
| HelpLink |
Bu özel durumla ilişkili yardım dosyasının bağlantısını alır veya ayarlar. (Devralındığı yer: Exception) |
| HResult |
Belirli bir özel duruma atanan kodlanmış sayısal bir değer olan HRESULT değerini alır veya ayarlar. (Devralındığı yer: Exception) |
| InnerException |
Exception Geçerli özel duruma neden olan örneği alır. (Devralındığı yer: Exception) |
| Message |
Geçerli özel durumu açıklayan bir ileti alır. (Devralındığı yer: Exception) |
| Source |
Hataya neden olan uygulamanın veya nesnenin adını alır veya ayarlar. (Devralındığı yer: Exception) |
| StackTrace |
Çağrı yığınındaki anlık çerçevelerin dize gösterimini alır. (Devralındığı yer: Exception) |
| TargetSite |
Geçerli özel durumu oluşturan yöntemini alır. (Devralındığı yer: Exception) |
Yöntemler
| Name | Description |
|---|---|
| Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
| GetBaseException() |
Türetilmiş bir sınıfta geçersiz kılındığında, sonraki bir veya daha fazla özel durumun kök nedeni olan değerini döndürür Exception . (Devralındığı yer: Exception) |
| GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
| GetObjectData(SerializationInfo, StreamingContext) |
Geçersiz.
Türetilmiş bir sınıfta geçersiz kılındığında, özel durum hakkındaki bilgilerle öğesini ayarlar SerializationInfo . (Devralındığı yer: Exception) |
| GetType() |
Geçerli örneğin çalışma zamanı türünü alır. (Devralındığı yer: Exception) |
| MemberwiseClone() |
Geçerli Objectbasit bir kopyasını oluşturur. (Devralındığı yer: Object) |
| ToString() |
Geçerli özel durumun dize gösterimini oluşturur ve döndürür. (Devralındığı yer: Exception) |
Ekinlikler
| Name | Description |
|---|---|
| SerializeObjectState |
Geçersiz.
Özel durum hakkında serileştirilmiş veriler içeren bir özel durum durumu nesnesi oluşturmak için bir özel durum seri hale getirildiğinde gerçekleşir. (Devralındığı yer: Exception) |