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

その他の技術情報

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


このページでは「.NET Framework クラス ライブラリ リファレンス」からThreadInterruptedExceptionを検索した結果を表示しています。
Weblioに収録されているすべての辞書からThreadInterruptedExceptionを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からThreadInterruptedException を検索

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

辞書ショートカット

すべての辞書の索引

「ThreadInterruptedException」の関連用語

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

   

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



ThreadInterruptedExceptionのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

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

©2025 GRAS Group, Inc.RSS