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
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 bilemezsinsiniz. 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, çağrı statik Thread.Abort
oluşturucuların yürütülmesini veya yönetilen veya yönetilmeyen kaynakların yayınlanmasını engelleyebilir.
Abort()
- 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ümlerde, 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ığında bir ThreadAbortException oluşturur.
ThreadAbortException
uygulama kodu tarafından yakalanabilen ancak çağrılmadığı sürece ResetAbort bloğun catch
sonunda yeniden oluşturulabilen özel bir özel durumdur.
ResetAbort
durdurma isteğini iptal eder ve öğesinin ThreadAbortException
iş parçacığını sonlandırmasını engeller. İş parçacığı durdurulmadan önce yürütülmeyen finally
bloklar yürütülür.
Not
bir iş parçacığı kendisini çağırdığında Abort
, etki bir özel durum oluşturma ile benzerdir; ThreadAbortException hemen 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 çalıştırılan kodu kesintiye uğratır. Statik bir oluşturucuyu iptal etme olasılığı da vardır. Nadir durumlarda, bu durum 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 edilmez. Bu durum, bir iş parçacığı durdurma yordamının bir parçası olarak çağrılan bloklarda finally
sınırsız miktarda 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 biteceği garanti değildir.
Not
Durdurulan iş parçacığı kodun korumalı bir bölgesindeyse( blok, finally
blok veya kısıtlanmış yürütme bölgesi gibicatch
) çağıran Abort iş parçacığı engelleyebilir. Çağıran Abort iş parçacığı durdurulan iş parçacığı gerektiren bir kilit tutarsa, bir 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
, ThreadAbortException
iş parçacığı yönetilen koda dönene kadar bir 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 Abort
mü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 Abort
sonucu olarak iş parçacığı sonlandırıldıktan sonra, iş parçacığının durumu olarak Stoppeddeğiştirilir. Yeterli izinlerle, hedefi Abort
olan bir 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ı ve iş parçacığı oluşturmayı kullanma
- İş parçacıklarını yok etme
Şunlara uygulanır
Abort(Object)
- 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 nasıl bilgi geçirildiğini gösterir.
using namespace System;
using namespace System::Threading;
ref class Test
{
private:
Test(){}
public:
static void TestMethod()
{
try
{
while ( true )
{
Console::WriteLine( "New thread running." );
Thread::Sleep( 1000 );
}
}
catch ( ThreadAbortException^ abortException )
{
Console::WriteLine( dynamic_cast<String^>(abortException->ExceptionState) );
}
}
};
int main()
{
Thread^ newThread = gcnew Thread( gcnew ThreadStart( &Test::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." );
}
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ümlerde, 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ığında bir ThreadAbortException oluşturur.
ThreadAbortException
uygulama kodu tarafından yakalanabilen ancak çağrılmadığı sürece ResetAbort bloğun catch
sonunda yeniden oluşturulabilen özel bir özel durumdur.
ResetAbort
durdurma isteğini iptal eder ve öğesinin ThreadAbortException
iş parçacığını sonlandırmasını engeller. İş parçacığı durdurulmadan önce yürütülmeyen finally
bloklar yürütülür.
Not
bir iş parçacığı kendisini çağırdığında Abort
, etki bir özel durum oluşturma ile benzerdir; ThreadAbortException hemen 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 çalıştırılan kodu kesintiye uğratır. Statik bir oluşturucuyu iptal etme olasılığı vardır. Nadir durumlarda, bu durum 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 edilmez. Bu durum, bir iş parçacığı durdurma yordamının bir parçası olarak çağrılan bloklarda finally
sınırsız miktarda 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ğinin garantisi yoktur.
Not
Durdurulan iş parçacığı kodun korumalı bir bölgesindeyse( blok, finally
blok veya kısıtlanmış yürütme bölgesi gibicatch
) çağıran Abort iş parçacığı engelleyebilir. Çağıran Abort iş parçacığı durdurulan iş parçacığı gerektiren bir kilit tutarsa, bir 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
, ThreadAbortException
iş parçacığı yönetilen koda dönene kadar bir 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 Abort
mü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 Abort
sonucu olarak iş parçacığı sonlandırıldıktan sonra, iş parçacığının durumu olarak Stoppeddeğiştirilir. Yeterli izinlerle, hedefi Abort
olan bir 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ı ve iş parçacığı oluşturmayı kullanma
- İş parçacıklarını yok etme