ThreadInterruptedExceptionとは? わかりやすく解説

ThreadInterruptedException クラス

Thread が待機状態のときに中断されるとスローされる例外。

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

<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class ThreadInterruptedException
    Inherits SystemException
Dim instance As ThreadInterruptedException
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public class ThreadInterruptedException : SystemException
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public ref class ThreadInterruptedException
 : public SystemException
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public class ThreadInterruptedException extends
 SystemException
SerializableAttribute 
ComVisibleAttribute(true) 
public class ThreadInterruptedException extends
 SystemException
解説解説

スレッドは、作成されてから破棄されるまでの間に、1 回以上 ThreadState 状態になります。スレッドが WaitSleepJoin 状態のときに Interrupt を呼び出すと、ターゲット スレッドで ThreadInterruptedException がスローされます。スレッドが WaitSleepJoin 状態でない場合は、スレッドがその状態になるまで例外はスローされません。スレッドがブロックしない場合、そのスレッドは中断されることなく完了します。

ThreadInterruptedException は、値 0x80131519 の HRESULT COR_E_THREADINTERRUPTED を使用します。

ThreadInterruptedException のインスタンスの初期プロパティ値の一覧については、ThreadInterruptedException コンストラクタのトピックを参照してください。

使用例使用例

実行中のスレッドが中断され、その後ブロックされたときの動作の例を次に示します。

Option Explicit
Option Strict

Imports System
Imports System.Security.Permissions
Imports System.Threading

<Assembly: SecurityPermissionAttribute(SecurityAction.RequestMinimum, _
    ControlThread := True)>

Public Class ThreadInterrupt

    <MTAThread> _
    Shared Sub Main()
        Dim stayAwake As New
 StayAwake()
        Dim newThread As New
 Thread(AddressOf stayAwake.ThreadMethod)
        newThread.Start()

        ' The following line causes an exception to be thrown 
        ' in ThreadMethod if newThread is currently blocked
        ' or becomes blocked in the future.
        newThread.Interrupt()
        Console.WriteLine("Main thread calls Interrupt on newThread.")

        ' Tell newThread to go to sleep.
        stayAwake.SleepSwitch = True

        ' Wait for newThread to end.
        newThread.Join()
    End Sub

End Class

Public Class StayAwake

    Dim sleepSwitchValue As Boolean
 = False

    WriteOnly Property SleepSwitch As
 Boolean
        Set
            sleepSwitchValue = Value
        End Set
    End Property 

    Sub New()
    End Sub

    Sub ThreadMethod()
        Console.WriteLine("newThread is executing ThreadMethod.")
        While Not sleepSwitchValue

            ' Use SpinWait instead of Sleep to demonstrate the 
            ' effect of calling Interrupt on a running thread.
            Thread.SpinWait(10000000)
        End While
        Try
            Console.WriteLine("newThread going to sleep.")

            ' When newThread goes to sleep, it is immediately 
            ' woken up by a ThreadInterruptedException.
            Thread.Sleep(Timeout.Infinite)
        Catch ex As ThreadInterruptedException
            Console.WriteLine("newThread cannot go to "
 & _
                "sleep - interrupted by main thread.")
        End Try
    End Sub

End Class
using System;
using System.Security.Permissions;
using System.Threading;

[assembly: SecurityPermissionAttribute(SecurityAction.RequestMinimum,
    ControlThread = true)]

class ThreadInterrupt
{
    static void Main()
    {
        StayAwake stayAwake = new StayAwake();
        Thread newThread = 
            new Thread(new ThreadStart(stayAwake.ThreadMethod));
        newThread.Start();

        // The following line causes an exception to be thrown 
        // in ThreadMethod if newThread is currently blocked
        // or becomes blocked in the future.
        newThread.Interrupt();
        Console.WriteLine("Main thread calls Interrupt on newThread.");

        // Tell newThread to go to sleep.
        stayAwake.SleepSwitch = true;

        // Wait for newThread to end.
        newThread.Join();
    }
}

class StayAwake
{
    bool sleepSwitch = false;

    public bool SleepSwitch
    {
        set{ sleepSwitch = value; }
    }

    public StayAwake(){}

    public void ThreadMethod()
    {
        Console.WriteLine("newThread is executing ThreadMethod.");
        while(!sleepSwitch)
        {
            // Use SpinWait instead of Sleep to demonstrate the 
            // effect of calling Interrupt on a running thread.
            Thread.SpinWait(10000000);
        }
        try
        {
            Console.WriteLine("newThread going to sleep.");

            // When newThread goes to sleep, it is immediately 
            // woken up by a ThreadInterruptedException.
            Thread.Sleep(Timeout.Infinite);
        }
        catch(ThreadInterruptedException e)
        {
            Console.WriteLine("newThread cannot go to sleep - " +
                "interrupted by main thread.");
        }
    }
}
using namespace System;
using namespace System::Security::Permissions;
using namespace System::Threading;

[assembly:SecurityPermissionAttribute(SecurityAction::RequestMinimum,
ControlThread=true)];
ref class StayAwake
{
private:
   bool sleepSwitch;

public:

   property bool SleepSwitch 
   {
      void set( bool value
 )
      {
         sleepSwitch = value;
      }

   }
   StayAwake()
   {
      sleepSwitch = false;
   }

   void ThreadMethod()
   {
      Console::WriteLine( "newThread is executing ThreadMethod." );
      while (  !sleepSwitch )
      {
         
         // Use SpinWait instead of Sleep to demonstrate the 
         // effect of calling Interrupt on a running thread.
         Thread::SpinWait( 10000000 );
      }

      try
      {
         Console::WriteLine( "newThread going to sleep." );
         
         // When newThread goes to sleep, it is immediately 
         // woken up by a ThreadInterruptedException.
         Thread::Sleep( Timeout::Infinite );
      }
      catch ( ThreadInterruptedException^ /*e*/ ) 
      {
         Console::WriteLine( "newThread cannot go to sleep - "
         "interrupted by main thread." );
      }

   }

};

int main()
{
   StayAwake^ stayAwake = gcnew StayAwake;
   Thread^ newThread = gcnew Thread( gcnew ThreadStart( stayAwake, &StayAwake::ThreadMethod
 ) );
   newThread->Start();
   
   // The following line causes an exception to be thrown 
   // in ThreadMethod if newThread is currently blocked
   // or becomes blocked in the future.
   newThread->Interrupt();
   Console::WriteLine( "Main thread calls Interrupt on newThread." );
   
   // Then tell newThread to go to sleep.
   stayAwake->SleepSwitch = true;
   
   // Wait for newThread to end.
   newThread->Join();
}

import System.*;
import System.Security.Permissions.*;
import System.Threading.*;
import System.Threading.Thread;

/** @assembly SecurityPermissionAttribute(SecurityAction.RequestMinimum,
    ControlThread = true)
 */

class ThreadInterrupt
{
    public static void main(String[]
 args)
    {
        StayAwake stayAwake =  new StayAwake();
        Thread newThread =  new Thread(new
 ThreadStart(stayAwake.ThreadMethod));
        newThread.Start();
      
        // The following line causes an exception to be thrown 
        // in ThreadMethod if newThread is currently blocked
        // or becomes blocked in the future.
        newThread.Interrupt();
        Console.WriteLine("Main thread calls Interrupt on newThread.");
      
        // Tell newThread to go to sleep.
        stayAwake.set_SleepSwitch(true);
      
        // Wait for newThread to end.
        newThread.Join();
   } //main
} //ThredInterrupt

class StayAwake
{
    private boolean sleepSwitch = false;

    /** @property
     */
    public void set_SleepSwitch(boolean value)
    {
        sleepSwitch = value;
    } //set_SleepSwitch

    public StayAwake()
    {
    } //StayAwake

    public void ThreadMethod()
    {
        Console.WriteLine("newThread is executing ThreadMethod.");
        while (!(sleepSwitch)) {
            // Use SpinWait instead of Sleep to demonstrate the 
            // effect of calling Interrupt on a running thread.
            Thread.SpinWait(10000000);
        }

        try {
            Console.WriteLine("newThread going to sleep.");

            // When newThread goes to sleep, it is immediately 
            // woken up by a ThreadInterruptedException.
            Thread.Sleep(Timeout.Infinite);
        }
        catch (ThreadInterruptedException e) {
            Console.WriteLine(("newThread cannot go to sleep - " 
                + "nterrupted by main thread."));
        }
    } //ThreadMethod
} //StayAwake
継承階層継承階層
System.Object
   System.Exception
     System.SystemException
      System.Threading.ThreadInterruptedException
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

ThreadInterruptedException コンストラクタ ()

ThreadInterruptedException クラスの新しいインスタンスを既定のプロパティを使用して初期化します。

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

Dim instance As New ThreadInterruptedException
public ThreadInterruptedException ()
public:
ThreadInterruptedException ()
public ThreadInterruptedException ()
public function ThreadInterruptedException
 ()
解説解説

ThreadInterruptedException のインスタンスの初期プロパティ値を次の表に示します。

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

ThreadInterruptedException コンストラクタ (SerializationInfo, StreamingContext)

シリアル化したデータを使用して、ThreadInterruptedException クラスの新しいインスタンスを初期化します。

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

Protected Sub New ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
Dim info As SerializationInfo
Dim context As StreamingContext

Dim instance As New ThreadInterruptedException(info,
 context)
protected ThreadInterruptedException (
    SerializationInfo info,
    StreamingContext context
)
protected:
ThreadInterruptedException (
    SerializationInfo^ info, 
    StreamingContext context
)
protected ThreadInterruptedException (
    SerializationInfo info, 
    StreamingContext context
)
protected function ThreadInterruptedException
 (
    info : SerializationInfo, 
    context : StreamingContext
)

パラメータ

info

スローされている例外に関するシリアル化済みオブジェクト データを保持している SerializationInfo。

context

転送元または転送先に関するコンテキスト情報を含んでいる StreamingContext。

解説解説
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

ThreadInterruptedException コンストラクタ (String)

指定したエラー メッセージを使用して、ThreadInterruptedException クラスの新しいインスタンスを初期化します。

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

Dim message As String

Dim instance As New ThreadInterruptedException(message)
public ThreadInterruptedException (
    string message
)
public:
ThreadInterruptedException (
    String^ message
)
public ThreadInterruptedException (
    String message
)
public function ThreadInterruptedException
 (
    message : String
)

パラメータ

message

例外の原因を説明するエラー メッセージ。

解説解説

ThreadInterruptedException のインスタンスの初期プロパティ値を次の表に示します。

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

ThreadInterruptedException コンストラクタ (String, Exception)

指定したエラー メッセージと、この例外の原因である内部例外への参照を使用して、ThreadInterruptedException クラスの新しいインスタンスを初期化します。

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

Public Sub New ( _
    message As String, _
    innerException As Exception _
)
Dim message As String
Dim innerException As Exception

Dim instance As New ThreadInterruptedException(message,
 innerException)
public ThreadInterruptedException (
    string message,
    Exception innerException
)
public:
ThreadInterruptedException (
    String^ message, 
    Exception^ innerException
)
public ThreadInterruptedException (
    String message, 
    Exception innerException
)
public function ThreadInterruptedException
 (
    message : String, 
    innerException : Exception
)

パラメータ

message

例外の原因を説明するエラー メッセージ。

innerException

現在の例外の原因である例外。innerException パラメータが null 参照 (Visual Basic では Nothing) でない場合は、内部例外を処理する catch ブロックで現在の例外が発生します。

解説解説

前の例外の直接の結果としてスローされる例外については、InnerException プロパティに、前の例外への参照が格納されます。InnerException プロパティは、コンストラクタに渡されたものと同じ値を返します。InnerException プロパティによって内部例外値がコンストラクタに渡されなかった場合は、null 参照 (Visual Basic では Nothing) を返します。

ThreadInterruptedException のインスタンスの初期プロパティ値を次の表に示します。

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

ThreadInterruptedException コンストラクタ

ThreadInterruptedException クラスの新しいインスタンスを初期化します。
オーバーロードの一覧オーバーロードの一覧

名前 説明
ThreadInterruptedException () ThreadInterruptedException クラスの新しいインスタンスを既定のプロパティを使用して初期化します。
ThreadInterruptedException (String) 指定したエラー メッセージを使用して、ThreadInterruptedException クラスの新しいインスタンスを初期化します。
ThreadInterruptedException (SerializationInfo, StreamingContext) シリアル化したデータを使用して、ThreadInterruptedException クラスの新しいインスタンスを初期化します。
ThreadInterruptedException (String, Exception) 指定したエラー メッセージと、この例外の原因である内部例外への参照を使用して、ThreadInterruptedException クラスの新しいインスタンスを初期化します。
参照参照

関連項目

ThreadInterruptedException クラス
ThreadInterruptedException メンバ
System.Threading 名前空間

その他の技術情報

スレッドの一時中断と再開
マネージ スレッドとアンマネージ スレッド

ThreadInterruptedException プロパティ


パブリック プロパティパブリック プロパティ

プロテクト プロパティプロテクト プロパティ
  名前 説明
プロテクト プロパティ HResult  特定の例外に割り当てられているコード化数値である HRESULT を取得または設定します。 ( Exception から継承されます。)
参照参照

関連項目

ThreadInterruptedException クラス
System.Threading 名前空間
Thread クラス
ThreadState

その他の技術情報

スレッドの一時中断と再開
マネージ スレッドとアンマネージ スレッド

ThreadInterruptedException メソッド


パブリック メソッドパブリック メソッド

プロテクト メソッドプロテクト メソッド
参照参照

関連項目

ThreadInterruptedException クラス
System.Threading 名前空間
Thread クラス
ThreadState

その他の技術情報

スレッドの一時中断と再開
マネージ スレッドとアンマネージ スレッド

ThreadInterruptedException メンバ

Thread が待機状態のときに中断されるとスローされる例外。

ThreadInterruptedException データ型で公開されるメンバを以下の表に示します。


パブリック コンストラクタパブリック コンストラクタ
プロテクト コンストラクタプロテクト コンストラクタ
  名前 説明
プロテクト メソッド ThreadInterruptedException オーバーロードされます。 ThreadInterruptedException クラスの新しいインスタンスを初期化します。
パブリック プロパティパブリック プロパティ
プロテクト プロパティプロテクト プロパティ
  名前 説明
プロテクト プロパティ HResult  特定の例外に割り当てられているコード化数値である HRESULT を取得または設定します。(Exception から継承されます。)
パブリック メソッドパブリック メソッド
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

ThreadInterruptedException クラス
System.Threading 名前空間
Thread クラス
ThreadState

その他の技術情報

スレッドの一時中断と再開
マネージ スレッドとアンマネージ スレッド



英和和英テキスト翻訳

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

辞書ショートカット

すべての辞書の索引

「ThreadInterruptedException」の関連用語

ThreadInterruptedExceptionのお隣キーワード
検索ランキング

   

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



ThreadInterruptedExceptionのページの著作権

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

©2026 GRAS Group, Inc.RSS