Aracılığıyla paylaş


ThreadAbortException Sınıf

Tanım

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
ThreadAbortException
Ö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)

Şunlara uygulanır

Ayrıca bkz.