Thread.Abort Thread.Abort Thread.Abort Thread.Abort Method

定義

このメソッドが呼び出された対象のスレッドで、そのスレッドの終了プロセスを開始する ThreadAbortException を発生させます。Raises a ThreadAbortException in the thread on which it is invoked, to begin the process of terminating the thread. このメソッドを呼び出すと、通常、スレッドが終了します。Calling this method usually terminates the thread.

オーバーロード

Abort() Abort() Abort() Abort()

このメソッドが呼び出された対象のスレッドで、そのスレッドの終了プロセスを開始する ThreadAbortException を発生させます。Raises a ThreadAbortException in the thread on which it is invoked, to begin the process of terminating the thread. このメソッドを呼び出すと、通常、スレッドが終了します。Calling this method usually terminates the thread.

Abort(Object) Abort(Object) Abort(Object) Abort(Object)

このメソッドが呼び出された対象のスレッドで、スレッドの終了プロセスを開始する ThreadAbortException を発生させます。またスレッドの終了に関する例外情報も提供します。Raises a ThreadAbortException in the thread on which it is invoked, to begin the process of terminating the thread while also providing exception information about the thread termination. このメソッドを呼び出すと、通常、スレッドが終了します。Calling this method usually terminates the thread.

注釈

重要

Thread.Abortメソッドは、注意して使用する必要があります。The Thread.Abort method should be used with caution. 現在のスレッド以外のスレッドの中止を呼び出すときに特にわからないが、どのようなコードの実行またはときに実行する失敗した、ThreadAbortExceptionがスローされたものアプリケーションの状態の特定またはアプリケーションとユーザー状態ことができます維持を担当します。Particularly when you call it to abort a thread other than the current thread, you do not know what code has executed or failed to execute when the ThreadAbortException is thrown, nor can you be certain of the state of your application or any application and user state that it is responsible for preserving. たとえば、呼び出しThread.Abort静的コンス トラクターが実行されないようにまたはアンマネージ リソースの解放を禁止する可能性があります。For example, calling Thread.Abort may prevent static constructors from executing or prevent the release of unmanaged resources.

なお、Thread.Abortメソッドは .NET Core でサポートされていません。Note that the Thread.Abort method is not supported on .NET Core.

Abort() Abort() Abort() Abort()

このメソッドが呼び出された対象のスレッドで、そのスレッドの終了プロセスを開始する ThreadAbortException を発生させます。Raises a ThreadAbortException in the thread on which it is invoked, to begin the process of terminating the thread. このメソッドを呼び出すと、通常、スレッドが終了します。Calling this method usually terminates the thread.

public:
 void Abort();
public void Abort ();
member this.Abort : unit -> unit
Public Sub Abort ()

例外

.NET Core のみ: このメンバーはサポートされていません。.NET Core only: This member is not supported.

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

中止しようとしているスレッドが現在中断されています。The thread that is being aborted is currently suspended.

注釈

スレッドでこのメソッドが呼び出されると、システムがスローされます、ThreadAbortExceptionスレッドを中止することにします。When this method is invoked on a thread, the system throws a ThreadAbortException in the thread to abort it. ThreadAbortException アプリケーションのコードでキャッチできる特殊な例外の最後に再スローされますが、catchしない限りブロックResetAbortが呼び出されます。ThreadAbortException is a special exception that can be caught by application code, but is re-thrown at the end of the catch block unless ResetAbort is called. ResetAbort 中止するには要求をキャンセルできず、ThreadAbortExceptionのスレッドを終了します。ResetAbort cancels the request to abort, and prevents the ThreadAbortException from terminating the thread. 実行されていないfinallyブロックは、スレッドが中止される前に実行されます。Unexecuted finally blocks are executed before the thread is aborted.

注意

スレッドを呼び出すとAbort自体の効果は例外をスローすることに似ています、 ThreadAbortException 、即座に実行され、結果は予測可能な。When a thread calls Abort on itself, the effect is similar to throwing an exception; the ThreadAbortException happens immediately, and the result is predictable. ただし、1 つのスレッドを呼び出す場合Abortどのようなコードが実行されているが、中止、別のスレッドで中断します。However, if one thread calls Abort on another thread, the abort interrupts whatever code is running. 静的コンス トラクターが中断される可能性もあります。There is also a chance that a static constructor could be aborted. まれに、そのクラスのインスタンスを防ぐため、そのアプリケーション ドメインで作成されない可能性がありますこれ。In rare cases, this might prevent instances of that class from being created in that application domain. スレッドが中止される可能性が可能性がある .NET Framework バージョン 1.0 および 1.1 では中、finally後者ブロックが実行されて、finallyブロックが中止されました。In the .NET Framework versions 1.0 and 1.1, there is a chance the thread could abort while a finally block is running, in which case the finally block is aborted.

スレッドは、すぐに、またはまったくを中止するは保証されません。The thread is not guaranteed to abort immediately, or at all. このような状況は、スレッドは計算量が境界のない場合に発生することができます、finally無期限のために、中止を遅延、中止手順の一部として呼び出されるブロック。This situation can occur if a thread does an unbounded amount of computation in the finally blocks that are called as part of the abort procedure, thereby indefinitely delaying the abort. スレッドが中止されるまで待ってを呼び出すことができます、Joinメソッドを呼び出した後、スレッド、Abortメソッド、待機が終了する保証はありません。To wait until a thread has aborted, you can call the Join method on the thread after calling the Abort method, but there is no guarantee the wait will end.

注意

呼び出すスレッドAbort場合などは、コードの保護領域で中止中のスレッドをブロックする可能性があります、catchブロック、finallyブロック、または制約された実行領域。The thread that calls Abort might block if the thread that is being aborted is in a protected region of code, such as a catch block, finally block, or constrained execution region. かどうか、スレッドを呼び出すAbortデッドロックが発生することができますが、中止されたスレッドが必要なロックを保持します。If the thread that calls Abort holds a lock that the aborted thread requires, a deadlock can occur.

場合Abortと呼びますが開始されていないスレッドでスレッドが中止される場合Startが呼び出されます。If Abort is called on a thread that has not been started, the thread will abort when Start is called. 場合Abortと呼ばれるはブロックされているかスリープ状態のスレッドでスレッドが中断され、中止されました。If Abort is called on a thread that is blocked or is sleeping, the thread is interrupted and then aborted.

場合Abortが中断されたスレッドで呼び出されます、ThreadStateExceptionを呼び出したスレッドでスローされるAbort、およびAbortRequestedに追加されます、ThreadStateが中止されたスレッドのプロパティ。If Abort is called on a thread that has been suspended, a ThreadStateException is thrown in the thread that called Abort, and AbortRequested is added to the ThreadState property of the thread being aborted. AThreadAbortExceptionまで中断されたスレッドではスローされませんResumeが呼び出されます。A ThreadAbortException is not thrown in the suspended thread until Resume is called.

場合Abort、アンマネージ コードの実行中に、マネージ スレッドで呼び出されます、ThreadAbortExceptionスレッドがマネージ コードに戻るまではスローされません。If Abort is called on a managed thread while it is executing unmanaged code, a ThreadAbortException is not thrown until the thread returns to managed code.

呼び出しは 2 つの場合Abortものでは、同時に、1 回の呼び出しの状態情報を設定すると、その他の呼び出しを実行することは、Abortします。If two calls to Abort come at the same time, it is possible for one call to set the state information and the other call to execute the Abort. ただし、アプリケーションは、このような状況を検出することはできません。However, an application cannot detect this situation.

Abortが呼び出されたスレッドでスレッドの状態が含まれますAbortRequestedします。After Abort is invoked on a thread, the state of the thread includes AbortRequested. 成功した呼び出しの結果として、スレッドが終了したらAbort、スレッドの状態に変更Stoppedします。After the thread has terminated as a result of a successful call to Abort, the state of the thread is changed to Stopped. 十分なアクセス許可を備えた、スレッドの対象となる、Abort中止を使用して、取り消すことができます、ResetAbortメソッド。With sufficient permissions, a thread that is the target of an Abort can cancel the abort using the ResetAbort method. 呼び出し元を示す例については、ResetAbortメソッドを参照してください、ThreadAbortExceptionクラス。For an example that demonstrates calling the ResetAbort method, see the ThreadAbortException class.

セキュリティ

SecurityPermission
スレッドでの高度な操作。for advanced operations on threads. ControlThread (関連する列挙体)Associated enumeration: ControlThread.

こちらもご覧ください

Abort(Object) Abort(Object) Abort(Object) Abort(Object)

このメソッドが呼び出された対象のスレッドで、スレッドの終了プロセスを開始する ThreadAbortException を発生させます。またスレッドの終了に関する例外情報も提供します。Raises a ThreadAbortException in the thread on which it is invoked, to begin the process of terminating the thread while also providing exception information about the thread termination. このメソッドを呼び出すと、通常、スレッドが終了します。Calling this method usually terminates the thread.

public:
 void Abort(System::Object ^ stateInfo);
public void Abort (object stateInfo);
member this.Abort : obj -> unit
Public Sub Abort (stateInfo As Object)

パラメーター

stateInfo
Object Object Object Object

中止するスレッドで使用できる、状態などのアプリケーション固有の情報を格納するオブジェクト。An object that contains application-specific information, such as state, which can be used by the thread being aborted.

例外

.NET Core のみ: このメンバーはサポートされていません。.NET Core only: This member is not supported.

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

中止しようとしているスレッドが現在中断されています。The thread that is being aborted is currently suspended.

次のコード例では、中止中のスレッドに情報を渡す方法を示します。The following code example shows how to pass information to a thread that is being aborted.

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);
        }
    }
}
Imports System
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

注釈

スレッドでこのメソッドが呼び出されると、システムがスローされます、ThreadAbortExceptionスレッドを中止することにします。When this method is invoked on a thread, the system throws a ThreadAbortException in the thread to abort it. ThreadAbortException アプリケーションのコードでキャッチできる特殊な例外の最後に再スローされますが、catchしない限りブロックResetAbortが呼び出されます。ThreadAbortException is a special exception that can be caught by application code, but is re-thrown at the end of the catch block unless ResetAbort is called. ResetAbort 中止するには要求をキャンセルできず、ThreadAbortExceptionのスレッドを終了します。ResetAbort cancels the request to abort, and prevents the ThreadAbortException from terminating the thread. 実行されていないfinallyブロックは、スレッドが中止される前に実行されます。Unexecuted finally blocks are executed before the thread is aborted.

注意

スレッドを呼び出すとAbort自体の効果は例外をスローすることに似ています、 ThreadAbortException 、即座に実行され、結果は予測可能な。When a thread calls Abort on itself, the effect is similar to throwing an exception; the ThreadAbortException happens immediately, and the result is predictable. ただし、1 つのスレッドを呼び出す場合Abortどのようなコードが実行されているが、中止、別のスレッドで中断します。However, if one thread calls Abort on another thread, the abort interrupts whatever code is running. 静的コンス トラクターが中断される可能性があります。There is a chance that a static constructor could be aborted. まれに、そのクラスのインスタンスを防ぐため、そのアプリケーション ドメインで作成されない可能性がありますこれ。In rare cases, this might prevent instances of that class from being created in that application domain. スレッドが中止される可能性が可能性がある .NET Framework バージョン 1.0 および 1.1 では中、finally後者ブロックが実行されて、finallyブロックが中止されました。In the .NET Framework versions 1.0 and 1.1, there is a chance the thread could abort while a finally block is running, in which case the finally block is aborted.

スレッドは、すぐに、またはまったくを中止するは保証されません。The thread is not guaranteed to abort immediately, or at all. このような状況は、スレッドは計算量が境界のない場合に発生することができます、finally無期限のために、中止を遅延、中止手順の一部として呼び出されるブロック。This situation can occur if a thread does an unbounded amount of computation in the finally blocks that are called as part of the abort procedure, thereby indefinitely delaying the abort. スレッドが中止されるまで待ってを呼び出すことができます、Joinメソッドを呼び出した後、スレッド、Abortメソッド、待機が終了されるという保証はありません。To wait until a thread has aborted, you can call the Join method on the thread after calling the Abort method, but there is no guarantee that the wait will end.

注意

呼び出すスレッドAbort場合などは、コードの保護領域で中止中のスレッドをブロックする可能性があります、catchブロック、finallyブロック、または制約された実行領域。The thread that calls Abort might block if the thread that is being aborted is in a protected region of code, such as a catch block, finally block, or constrained execution region. かどうか、スレッドを呼び出すAbortデッドロックが発生することができますが、中止されたスレッドが必要なロックを保持します。If the thread that calls Abort holds a lock that the aborted thread requires, a deadlock can occur.

場合Abortと呼びますが開始されていないスレッドでスレッドが中止される場合Startが呼び出されます。If Abort is called on a thread that has not been started, the thread will abort when Start is called. 場合Abortと呼ばれるはブロックされているかスリープ状態のスレッドでスレッドが中断され、中止されました。If Abort is called on a thread that is blocked or is sleeping, the thread is interrupted and then aborted.

場合Abortが中断されたスレッドで呼び出されます、ThreadStateExceptionを呼び出したスレッドでスローされるAbort、およびAbortRequestedに追加されます、ThreadStateが中止されたスレッドのプロパティ。If Abort is called on a thread that has been suspended, a ThreadStateException is thrown in the thread that called Abort, and AbortRequested is added to the ThreadState property of the thread being aborted. AThreadAbortExceptionまで中断されたスレッドではスローされませんResumeが呼び出されます。A ThreadAbortException is not thrown in the suspended thread until Resume is called.

場合Abort、アンマネージ コードの実行中に、マネージ スレッドで呼び出されます、ThreadAbortExceptionスレッドがマネージ コードに戻るまではスローされません。If Abort is called on a managed thread while it is executing unmanaged code, a ThreadAbortException is not thrown until the thread returns to managed code.

呼び出しは 2 つの場合Abortものでは、同時に、1 回の呼び出しの状態情報を設定すると、その他の呼び出しを実行することは、Abortします。If two calls to Abort come at the same time, it is possible for one call to set the state information and the other call to execute the Abort. ただし、アプリケーションは、このような状況を検出することはできません。However, an application cannot detect this situation.

Abortが呼び出されたスレッドでスレッドの状態が含まれますAbortRequestedします。After Abort is invoked on a thread, the state of the thread includes AbortRequested. 成功した呼び出しの結果として、スレッドが終了したらAbort、スレッドの状態に変更Stoppedします。After the thread has terminated as a result of a successful call to Abort, the state of the thread is changed to Stopped. 十分なアクセス許可を備えた、スレッドの対象となる、Abort中止を使用して、取り消すことができます、ResetAbortメソッド。With sufficient permissions, a thread that is the target of an Abort can cancel the abort using the ResetAbort method. 呼び出し元を示す例については、ResetAbortメソッドを参照してください、ThreadAbortExceptionクラス。For an example that demonstrates calling the ResetAbort method, see the ThreadAbortException class.

セキュリティ

SecurityPermission
スレッドでの高度な操作。for advanced operations on threads. ControlThread (関連する列挙体)Associated enumeration: ControlThread.

こちらもご覧ください

適用対象