Thread.Abort メソッド ()とは? わかりやすく解説

Thread.Abort メソッド ()

このメソッド呼び出され対象スレッドで、そのスレッド終了プロセス開始する ThreadAbortException を発生させます。このメソッド呼び出すと、通常スレッド終了します

名前空間: System.Threading
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

例外例外
例外種類条件

SecurityException

呼び出し元に必要なアクセス許可がありません。

ThreadStateException

中止するスレッドが現在中断されています。

解説解説

このメソッドスレッド上で呼び出すと、スレッドThreadAbortExceptionスローされ、スレッド中止されます。ThreadAbortException は、アプリケーション コードキャッチできても ResetAbort を呼び出さない限り catch ブロック末尾で再スローされる特殊な例外です。ResetAbort中止要求キャンセルしThreadAbortException によってスレッド終了されるのを防ぎます実行されていない finally ブロックは、スレッド中止される前に実行されます。

メモメモ

スレッド自身に対して Abort呼び出した場合その結果例外スローした場合似てます。ThreadAbortException がすぐに発生し結果予期できます。ただし、別のスレッドに対して Abort呼び出した場合、この結果中断されるコード予期できません。また、静的コンストラクタ中断される可能性あります。まれにしか起こりませんが、これによって、そのアプリケーション ドメインでそのクラスインスタンス作成中断されることもあります.NET Framework Version 1.0 および 1.1 では、finally ブロック実行中にスレッド中止される場合あります。この場合finally ブロック中止されます。

スレッドがすぐに確実に中止されるかどうか保証できません。この状況は、アボート プロシージャ一部として呼び出される finally ブロックスレッド無制限に計算実行した結果無制限に中止が遅れる場合発生することがありますスレッド中止されるまで待機するには、Abort メソッド呼び出した後にスレッドJoin メソッド呼び出します。ただし、待機確実に終了するとは限りません。

起動していないスレッドAbort呼び出されると、Start呼び出されたときにスレッド中止しますブロック状態またはスリープ状態スレッドAbort呼び出すと、そのスレッド中断してから中止します

中断中のスレッドAbort呼び出すと、Abort呼び出したスレッド内で ThreadStateExceptionスローされ、中止するスレッドの ThreadState プロパティに AbortRequested が追加されます。中断されスレッドでは、Resume呼び出されるまで ThreadAbortExceptionスローされません。

アンマネージ コード実行中にスレッドThreadAbortException無視すると、スレッドマネージ コードの実行開始したときに ThreadAbortException が再スローさます。

Abort同時に 2 回呼び出すと、1 回目呼び出しで状態情報設定しもう 1 回呼び出しAbort実行できます。ただし、アプリケーションはこの状態を区別できません。

スレッドAbort呼び出した後は、そのスレッドの状態には AbortRequested含まれます。Abort正常に呼び出した結果スレッド終了すると、スレッドの状態が Stopped に変更されます。十分なアクセス許可がある場合Abort対象となるスレッドは、ResetAbort メソッド使用して中止キャンセルできますResetAbort メソッド呼び出し例については、ThreadAbortException クラストピック参照してください

.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Thread.Abort メソッド (Object)

このメソッド呼び出され対象スレッドで、スレッド終了プロセス開始する ThreadAbortException を発生させます。またスレッド終了に関する例外情報提供します。このメソッド呼び出すと、通常スレッド終了します

名前空間: System.Threading
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

例外例外
例外種類条件

SecurityException

呼び出し元に必要なアクセス許可がありません。

ThreadStateException

中止するスレッドが現在中断されています。

解説解説

このメソッドスレッド上で呼び出すと、スレッドThreadAbortExceptionスローされ、スレッド中止されます。ThreadAbortException は、アプリケーション コードキャッチできても ResetAbort を呼び出さない限り catch ブロック末尾で再スローされる特殊な例外です。ResetAbort中止要求キャンセルしThreadAbortException によってスレッド終了されるのを防ぎます実行されていない finally ブロックは、スレッド中止される前に実行されます。

メモメモ

スレッド自身に対して Abort呼び出した場合その結果例外スローした場合似てます。ThreadAbortException がすぐに発生し結果予期できます。ただし、別のスレッドに対して Abort呼び出した場合、この結果中断されるコード予期できません。静的コンストラクタ中止される可能性あります。まれにしか起こりませんが、これによって、そのアプリケーション ドメインでそのクラスインスタンス作成中断されることもあります.NET Framework Version 1.0 および 1.1 では、finally ブロック実行中にスレッド中止される場合あります。この場合finally ブロック中止されます。

スレッドがすぐに確実に中止されるかどうか保証できません。この状況は、アボート プロシージャ一部として呼び出される finally ブロックスレッド無制限に計算実行した結果無制限に中止が遅れる場合発生することがありますスレッド中止されるまで待機するには、Abort メソッド呼び出した後にスレッドJoin メソッド呼び出します。ただし、待機確実に終了するとは限りません。

起動していないスレッドAbort呼び出されると、Start呼び出されたときにスレッド中止しますブロック状態またはスリープ状態スレッドAbort呼び出すと、そのスレッド中断してから中止します

中断中のスレッドAbort呼び出すと、Abort呼び出したスレッド内で ThreadStateExceptionスローされ、中止するスレッドの ThreadState プロパティに AbortRequested が追加されます。中断されスレッドでは、Resume呼び出されるまで ThreadAbortExceptionスローされません。

アンマネージ コード実行中にスレッドThreadAbortException無視すると、スレッドマネージ コードの実行開始したときに ThreadAbortException が再スローさます。

Abort同時に 2 回呼び出すと、1 回目呼び出しで状態情報設定しもう 1 回呼び出しAbort実行できます。ただし、アプリケーションはこの状態を区別できません。

スレッドAbort呼び出した後は、そのスレッドの状態には AbortRequested含まれます。Abort正常に呼び出した結果スレッド終了すると、スレッドの状態が Stopped に変更されます。十分なアクセス許可がある場合Abort対象となるスレッドは、ResetAbort メソッド使用して中止キャンセルできますResetAbort メソッド呼び出し例については、ThreadAbortException クラストピック参照してください

使用例使用例

中止するスレッド情報を渡す方法の例を次に示します

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
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);
        }
    }
}
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." );
}

import System.*;
import System.Threading.*;
import System.Threading.Thread;    

class Test
{
    public static void main(String[]
 args)
    {
        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.");
    } //main

    static void TestMethod()
    {
        try {
            while (true) {
                Console.WriteLine("New thread running.");
                Thread.Sleep(1000);
            }
        }
        catch (ThreadAbortException abortException) {
            Console.WriteLine((System.String)(abortException.
                get_ExceptionState()));
        }
    } //TestMethod
} //Test
.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Thread.Abort メソッド




英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Thread.Abort メソッド ()」の関連用語

Thread.Abort メソッド ()のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Thread.Abort メソッド ()のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2024 Microsoft.All rights reserved.

©2024 GRAS Group, Inc.RSS