Timeout 类

定义

包含指定无限期超时间隔的常数。 此类不能被继承。

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

示例

以下示例显示了一个线程无限期进入睡眠状态,随后被唤醒。

C#
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 由接受整数 millisecondsTimeout 参数的方法(如 Thread.Sleep(Int32)Thread.Join(Int32)ReaderWriterLock.AcquireReaderLock(Int32))使用。 InfiniteTimeSpan 由接受 timeout 类型 TimeSpan参数的方法使用,例如 Thread.Sleep(TimeSpan)Thread.Join(TimeSpan)ReaderWriterLock.AcquireReaderLock(TimeSpan)

字段

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, 10
.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

线程安全性

此类型是线程安全的。

另请参阅