英語で読む

次の方法で共有


Timeout クラス

定義

無限タイムアウト間隔を指定する定数を格納します。 このクラスは継承できません。

public static class Timeout
public sealed class Timeout
[System.Runtime.InteropServices.ComVisible(true)]
public static class Timeout
継承
Timeout
属性

次の例は、スレッドが無限の時間スリープ状態になり、その後目を覚ますことを示しています。

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

注釈

このクラスのメンバーは、スレッド操作で無限のタイムアウト間隔を指定するために使用されます。 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 Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

スレッド セーフ

この型はスレッド セーフです。

こちらもご覧ください