Timeout クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
無限タイムアウト間隔を指定する定数を格納します。 このクラスは継承できません。
public ref class Timeout abstract sealed
public ref class Timeout sealed
public static class Timeout
public sealed class Timeout
[System.Runtime.InteropServices.ComVisible(true)]
public static class Timeout
type Timeout = class
[<System.Runtime.InteropServices.ComVisible(true)>]
type Timeout = class
Public Class Timeout
Public NotInheritable Class Timeout
- 継承
-
Timeout
- 属性
例
次の例は、スレッドが無限の時間スリープ状態になり、その後目を覚ますことを示しています。
using namespace System;
using namespace System::Security::Permissions;
using namespace System::Threading;
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();
}
using System;
using System.Security.Permissions;
using System.Threading;
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.");
}
}
}
Option Explicit
Option Strict
Imports System.Security.Permissions
Imports System.Threading
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
注釈
このクラスのメンバーは、スレッド操作で無限のタイムアウト間隔を指定するために使用されます。
Infiniteは、、 などのThread.Sleep(Int32)Thread.Join(Int32)整数millisecondsTimeout
パラメーターを受け取るメソッドによって使用されますReaderWriterLock.AcquireReaderLock(Int32)。
InfiniteTimeSpanは、、 などのThread.Join(TimeSpan)Thread.Sleep(TimeSpan)ReaderWriterLock.AcquireReaderLock(TimeSpan)型TimeSpanのパラメーターをtimeout
受け取るメソッドによって使用されます。
フィールド
Infinite |
Int32 パラメーターを許可するスレッド メソッドに、無期限の待機期間を指定するために使用される定数。 |
InfiniteTimeSpan |
TimeSpan パラメーターを許可するメソッドに、無期限の待機期間を指定するために使用される定数。 |
適用対象
スレッド セーフ
この型はスレッド セーフです。
こちらもご覧ください
.NET