Ler em inglês

Compartilhar via


Timeout Classe

Definição

Contém constantes que especificam intervalos de tempo limite infinitos. Essa classe não pode ser herdada.

C#
public static class Timeout
C#
public sealed class Timeout
C#
[System.Runtime.InteropServices.ComVisible(true)]
public static class Timeout
Herança
Timeout
Atributos

Exemplos

O exemplo a seguir mostra um thread indo dormir por um tempo infinito e, posteriormente, sendo acordado.

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

Comentários

Os membros dessa classe são usados para especificar intervalos infinitos de tempo limite em operações de threading. Infinite é usado por métodos que aceitam um parâmetro inteiro millisecondsTimeout , como Thread.Sleep(Int32), Thread.Join(Int32)e ReaderWriterLock.AcquireReaderLock(Int32). InfiniteTimeSpan é usado por métodos que aceitam um timeout parâmetro do tipo TimeSpan, como Thread.Sleep(TimeSpan), Thread.Join(TimeSpan)e ReaderWriterLock.AcquireReaderLock(TimeSpan).

Campos

Infinite

Uma constante usada para especificar um período de espera infinito, para métodos de thread que aceitam um parâmetro Int32.

InfiniteTimeSpan

Uma constante usada para especificar um período de espera infinito para métodos que aceitam um parâmetro TimeSpan.

Aplica-se a

Produto Versões
.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

Acesso thread-safe

Este tipo é thread-safe.

Confira também