Lire en anglais

Partager via


Timeout Classe

Définition

Contient les constantes qui spécifient des intervalles de délai d'attente infinis. Cette classe ne peut pas être héritée.

C#
public static class Timeout
C#
public sealed class Timeout
C#
[System.Runtime.InteropServices.ComVisible(true)]
public static class Timeout
Héritage
Timeout
Attributs

Exemples

L’exemple suivant montre qu’un thread est mis en veille pendant une durée infinie et qu’il est ensuite réveillé.

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

Remarques

Les membres de cette classe sont utilisés pour spécifier des intervalles de délai d’attente infinis dans les opérations de threading. Infinite est utilisé par les méthodes qui acceptent un paramètre entier millisecondsTimeout , tel que Thread.Sleep(Int32), Thread.Join(Int32)et ReaderWriterLock.AcquireReaderLock(Int32). InfiniteTimeSpan est utilisé par les méthodes qui acceptent un timeout paramètre de type TimeSpan, tel que Thread.Sleep(TimeSpan), Thread.Join(TimeSpan)et ReaderWriterLock.AcquireReaderLock(TimeSpan).

Champs

Infinite

Constante utilisée pour spécifier une période d'attente infinie, pour les méthodes de thread qui acceptent un paramètre de Int32.

InfiniteTimeSpan

Constante utilisée pour spécifier une période d'attente infinie, pour les méthodes qui acceptent un paramètre de TimeSpan.

S’applique à

Produit Versions
.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

Cohérence de thread

Ce type est thread-safe.

Voir aussi