Thread.Abort Yöntem
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.
İş parçacığını sonlandırma işlemini başlatmak için çağrıldığı iş parçacığında bir ThreadAbortException oluşturur. Bu yöntemin çağrılması genellikle iş parçacığını sonlandırır.
Aşırı Yüklemeler
| Name | Description |
|---|---|
| Abort() |
Geçersiz.
İş parçacığını sonlandırma işlemini başlatmak için çağrıldığı iş parçacığında bir ThreadAbortException oluşturur. Bu yöntemin çağrılması genellikle iş parçacığını sonlandırır. |
| Abort(Object) |
Geçersiz.
İş parçacığını sonlandırma işlemini başlatmak ve iş parçacığı sonlandırma hakkında özel durum bilgileri sağlamak için çağrıldığı iş parçacığında bir ThreadAbortException oluşturur. Bu yöntemin çağrılması genellikle iş parçacığını sonlandırır. |
Açıklamalar
Önemli
Thread.Abort yöntemini dikkatli kullanın. Özellikle geçerli iş parçacığı dışında bir iş parçacığını durdurmak için çağırdığınızda, hangi kodun yürütüldiğini veya ne zaman ThreadAbortException yürütülediğini bilmezsiniz. Ayrıca uygulamanızın durumundan veya korumadan sorumlu olduğu herhangi bir uygulama ve kullanıcı durumundan da emin olamazsınız. Örneğin, Thread.Abort çağrısı yapmak, statik oluşturucuların yürütülmesini veya yönetilen ya da yönetilmeyen kaynakların serbest bırakılmasını engelleyebilir.
Abort()
- Kaynak:
- Thread.cs
- Kaynak:
- Thread.cs
- Kaynak:
- Thread.cs
- Kaynak:
- Thread.cs
- Kaynak:
- Thread.cs
Dikkat
Thread.Abort is not supported and throws PlatformNotSupportedException.
İş parçacığını sonlandırma işlemini başlatmak için çağrıldığı iş parçacığında bir ThreadAbortException oluşturur. Bu yöntemin çağrılması genellikle iş parçacığını sonlandırır.
public:
void Abort();
[System.Obsolete("Thread.Abort is not supported and throws PlatformNotSupportedException.", DiagnosticId="SYSLIB0006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public void Abort();
public void Abort();
[<System.Obsolete("Thread.Abort is not supported and throws PlatformNotSupportedException.", DiagnosticId="SYSLIB0006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
member this.Abort : unit -> unit
member this.Abort : unit -> unit
Public Sub Abort ()
- Öznitelikler
Özel durumlar
Yalnızca .NET Core ve .NET 5+ : Her durumda.
Çağıranın gerekli izni yok.
Durdurulan iş parçacığı şu anda askıya alınmış durumda.
Açıklamalar
Bu yöntem kullanımdan kaldırıldı. .NET 5 ve sonraki sürümlerinde, bu yöntemin çağrılması bir derleme zamanı uyarısı oluşturur. Bu yöntem , .NET 5 ve üzeri ile .NET Core'da çalışma zamanında oluşturur PlatformNotSupportedException .
Bu yöntem bir iş parçacığında çağrıldığında, sistem bunu durdurmak için iş parçacığına bir ThreadAbortException oluşturur.
ThreadAbortExceptionuygulama kodu tarafından yakalanabilen ancak çağrılmadığı sürece ResetAbort bloğun catch sonunda yeniden oluşturulabilen özel bir özel durumdur.
ResetAbort iptal etme isteğini iptal eder ve iş parçacığının ThreadAbortException sonlandırılmasını engeller. İş parçacığı durdurulmadan önce yürütülmeyen finally bloklar yürütülür.
Uyarı
bir iş parçacığı kendisini çağırdığında Abort , etki bir özel durum oluşturmakla benzerdir; ThreadAbortException anında gerçekleşir ve sonuç tahmin edilebilir olur. Ancak, bir iş parçacığı başka bir iş parçacığında çağırırsa Abort , durdurma işlemi hangi kodun çalıştığını kesintiye uğratır. Statik bir oluşturucuyu durdurma olasılığı da vardır. Nadir durumlarda bu, söz konusu sınıfın örneklerinin söz konusu uygulama etki alanında oluşturulmasını engelleyebilir.
İş parçacığının hemen veya hiç durdurulması garanti değildir. Bu durum, bir iş parçacığı durdurma yordamının bir parçası olarak çağrılan bloklarda finally sınırsız hesaplama yaparsa ve böylece iptali süresiz olarak geciktirirse ortaya çıkabilir. Bir iş parçacığı durdurulana kadar beklemek için, yöntemini çağırdıktan sonra iş parçacığında yöntemini çağırabilirsiniz JoinAbort , ancak beklemenin sona ereceği garanti değildir.
Uyarı
Durdurulan Abort iş parçacığı blok, finally blok veya kısıtlanmış yürütme bölgesi gibi korumalı bir catch kod bölgesindeyse çağıran iş parçacığı engelleyebilir. Çağıran Abort iş parçacığı durdurulan iş parçacığının gerektirdiği bir kilit barındırıyorsa, kilitlenme oluşabilir.
Başlatılmamış bir iş parçacığında çağrılırsa Abort , iş parçacığı çağrıldığında Start durdurulacaktır. Engellenen veya uyuyan bir iş parçacığında çağrılırsa Abort , iş parçacığı kesilir ve sonra durduruldu.
Askıya alınmış bir iş parçacığında çağrılırsaAbort, adlı Abortiş parçacığında bir ThreadStateException oluşturulur ve AbortRequested durdurulan iş parçacığının özelliğine ThreadState eklenir. Çağrılana kadar Resume askıya alınan iş parçacığında bir ThreadAbortException atılmaz.
Yönetilmeyen kodu yürütürken yönetilen bir iş parçacığında çağrılırsa Abort , iş parçacığı yönetilen koda dönene kadar bir ThreadAbortException atılmaz.
Aynı anda iki çağrı Abort gelirse, bir çağrının durum bilgilerini ayarlaması ve diğer çağrının yürütmesi Abortmümkündür. Ancak, bir uygulama bu durumu algılayamaz.
bir iş parçacığında çağrıldıktan sonra Abort , iş parçacığının durumu içerir AbortRequested. başarılı bir çağrısının Abortsonucu olarak iş parçacığı sonlandırıldıktan sonra, iş parçacığının durumu olarak Stoppeddeğiştirilir. Yeterli izinlerle, hedefi olan bir Abort iş parçacığı yöntemini kullanarak ResetAbort iptali iptal edebilir. yöntemini çağırmayı ResetAbort gösteren bir örnek için sınıfına ThreadAbortException bakın.
Ayrıca bkz.
- ThreadAbortException
- Aborted
- AbortRequested
- İş Parçacıkları ve İş Parçacığı Oluşturma
- İş parçacıklarını ve iş parçacığı yönetimini kullanma
- İş parçacıklarını yok etme
Şunlara uygulanır
Abort(Object)
- Kaynak:
- Thread.cs
- Kaynak:
- Thread.cs
- Kaynak:
- Thread.cs
- Kaynak:
- Thread.cs
- Kaynak:
- Thread.cs
Dikkat
Thread.Abort is not supported and throws PlatformNotSupportedException.
İş parçacığını sonlandırma işlemini başlatmak ve iş parçacığı sonlandırma hakkında özel durum bilgileri sağlamak için çağrıldığı iş parçacığında bir ThreadAbortException oluşturur. Bu yöntemin çağrılması genellikle iş parçacığını sonlandırır.
public:
void Abort(System::Object ^ stateInfo);
[System.Obsolete("Thread.Abort is not supported and throws PlatformNotSupportedException.", DiagnosticId="SYSLIB0006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public void Abort(object? stateInfo);
public void Abort(object stateInfo);
public void Abort(object? stateInfo);
[<System.Obsolete("Thread.Abort is not supported and throws PlatformNotSupportedException.", DiagnosticId="SYSLIB0006", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
member this.Abort : obj -> unit
member this.Abort : obj -> unit
Public Sub Abort (stateInfo As Object)
Parametreler
- stateInfo
- Object
Durdurulan iş parçacığı tarafından kullanılabilecek durum gibi uygulamaya özgü bilgiler içeren bir nesne.
- Öznitelikler
Özel durumlar
Yalnızca .NET Core ve .NET 5+ : Her durumda.
Çağıranın gerekli izni yok.
Durdurulan iş parçacığı şu anda askıya alınmış durumda.
Örnekler
Aşağıdaki kod örneği, durdurulan bir iş parçacığına bilgi geçirmeyi gösterir.
using System;
using System.Threading;
class Test
{
public static void Main()
{
Thread newThread = new Thread(new ThreadStart(TestMethod));
newThread.Start();
Thread.Sleep(1000);
// Abort newThread.
Console.WriteLine("Main aborting new thread.");
newThread.Abort("Information from Main.");
// Wait for the thread to terminate.
newThread.Join();
Console.WriteLine("New thread terminated - Main exiting.");
}
static void TestMethod()
{
try
{
while(true)
{
Console.WriteLine("New thread running.");
Thread.Sleep(1000);
}
}
catch(ThreadAbortException abortException)
{
Console.WriteLine((string)abortException.ExceptionState);
}
}
}
open System.Threading
let testMethod () =
try
while true do
printfn "New thread running."
Thread.Sleep 1000
with :? ThreadAbortException as abortException ->
printfn $"{abortException.ExceptionState :?> string}"
let newThread = Thread testMethod
newThread.Start()
Thread.Sleep 1000
// Abort newThread.
printfn "Main aborting new thread."
newThread.Abort "Information from Main."
// Wait for the thread to terminate.
newThread.Join()
printfn "New thread terminated - Main exiting."
Imports System.Threading
Public Class Test
<MTAThread> _
Shared Sub Main()
Dim newThread As New Thread(AddressOf TestMethod)
newThread.Start()
Thread.Sleep(1000)
' Abort newThread.
Console.WriteLine("Main aborting new thread.")
newThread.Abort("Information from Main.")
' Wait for the thread to terminate.
newThread.Join()
Console.WriteLine("New thread terminated - Main exiting.")
End Sub
Shared Sub TestMethod()
Try
While True
Console.WriteLine("New thread running.")
Thread.Sleep(1000)
End While
Catch abortException As ThreadAbortException
Console.WriteLine( _
CType(abortException.ExceptionState, String))
End Try
End Sub
End Class
Açıklamalar
Bu yöntem kullanımdan kaldırıldı. .NET 5 ve sonraki sürümlerinde, bu yöntemin çağrılması bir derleme zamanı uyarısı oluşturur. Bu yöntem , .NET 5 ve üzeri ile .NET Core'da çalışma zamanında oluşturur PlatformNotSupportedException .
Bu yöntem bir iş parçacığında çağrıldığında, sistem bunu durdurmak için iş parçacığına bir ThreadAbortException oluşturur.
ThreadAbortExceptionuygulama kodu tarafından yakalanabilen ancak çağrılmadığı sürece ResetAbort bloğun catch sonunda yeniden oluşturulabilen özel bir özel durumdur.
ResetAbort iptal etme isteğini iptal eder ve iş parçacığının ThreadAbortException sonlandırılmasını engeller. İş parçacığı durdurulmadan önce yürütülmeyen finally bloklar yürütülür.
Uyarı
bir iş parçacığı kendisini çağırdığında Abort , etki bir özel durum oluşturmakla benzerdir; ThreadAbortException anında gerçekleşir ve sonuç tahmin edilebilir olur. Ancak, bir iş parçacığı başka bir iş parçacığında çağırırsa Abort , durdurma işlemi hangi kodun çalıştığını kesintiye uğratır. Statik oluşturucuların durdurulma olasılığı vardır. Nadir durumlarda bu, söz konusu sınıfın örneklerinin söz konusu uygulama etki alanında oluşturulmasını engelleyebilir.
İş parçacığının hemen veya hiç durdurulması garanti değildir. Bu durum, bir iş parçacığı durdurma yordamının bir parçası olarak çağrılan bloklarda finally sınırsız hesaplama yaparsa ve böylece iptali süresiz olarak geciktirirse ortaya çıkabilir. bir iş parçacığı durdurulana kadar beklemek için, yöntemini çağırdıktan Abort sonra iş parçacığında yöntemini çağırabilirsinizJoin, ancak beklemenin sona ereceğinin garantisi yoktur.
Uyarı
Durdurulan Abort iş parçacığı blok, finally blok veya kısıtlanmış yürütme bölgesi gibi korumalı bir catch kod bölgesindeyse çağıran iş parçacığı engelleyebilir. Çağıran Abort iş parçacığı durdurulan iş parçacığının gerektirdiği bir kilit barındırıyorsa, kilitlenme oluşabilir.
Başlatılmamış bir iş parçacığında çağrılırsa Abort , iş parçacığı çağrıldığında Start durdurulacaktır. Engellenen veya uyuyan bir iş parçacığında çağrılırsa Abort , iş parçacığı kesilir ve sonra durduruldu.
Askıya alınmış bir iş parçacığında çağrılırsaAbort, adlı Abortiş parçacığında bir ThreadStateException oluşturulur ve AbortRequested durdurulan iş parçacığının özelliğine ThreadState eklenir. Çağrılana kadar Resume askıya alınan iş parçacığında bir ThreadAbortException atılmaz.
Yönetilmeyen kodu yürütürken yönetilen bir iş parçacığında çağrılırsa Abort , iş parçacığı yönetilen koda dönene kadar bir ThreadAbortException atılmaz.
Aynı anda iki çağrı Abort gelirse, bir çağrının durum bilgilerini ayarlaması ve diğer çağrının yürütmesi Abortmümkündür. Ancak, bir uygulama bu durumu algılayamaz.
bir iş parçacığında çağrıldıktan sonra Abort , iş parçacığının durumu içerir AbortRequested. başarılı bir çağrısının Abortsonucu olarak iş parçacığı sonlandırıldıktan sonra, iş parçacığının durumu olarak Stoppeddeğiştirilir. Yeterli izinlerle, hedefi olan bir Abort iş parçacığı yöntemini kullanarak ResetAbort iptali iptal edebilir. yöntemini çağırmayı ResetAbort gösteren bir örnek için sınıfına ThreadAbortException bakın.
Ayrıca bkz.
- ThreadAbortException
- Aborted
- AbortRequested
- İş Parçacıkları ve İş Parçacığı Oluşturma
- İş parçacıklarını ve iş parçacığı yönetimini kullanma
- İş parçacıklarını yok etme