Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

WaitHandle.WaitOne méthode (Int32)

 

Date de publication : novembre 2016

Bloque le thread actuel jusqu'à ce que le WaitHandle actuel reçoive un signal, en utilisant un entier signé 32 bits pour spécifier l'intervalle de temps.

Espace de noms:   System.Threading
Assembly:  mscorlib (dans mscorlib.dll)

public virtual bool WaitOne(
	int millisecondsTimeout
)

Paramètres

millisecondsTimeout
Type: System.Int32

Nombre de millisecondes à attendre, ou Timeout.Infinite (-1) pour un délai d'attente infini.

Valeur de retour

Type: System.Boolean

true si l'instance actuelle reçoit un signal ; sinon, false.

Exception Condition
ObjectDisposedException

L'instance actuelle a déjà été supprimé.

ArgumentOutOfRangeException

millisecondsTimeout est un nombre négatif différent de -1, qui représente un délai d’attente infini.

AbandonedMutexException

Attente terminée, car un thread s’est terminé sans libérer de mutex. Cette exception n’est pas levée sur Windows 98 ou Windows Millennium Edition.

InvalidOperationException

L’instance actuelle est un proxy transparent pour un WaitHandle dans un autre domaine d’application.

Si millisecondsTimeout est égal à zéro, la méthode ne bloque pas. Elle teste l’état du handle d’attente et retourne immédiatement.

L’appelant de cette méthode bloque jusqu'à ce que l’instance actuelle reçoive un signal ou un dépassement de délai se produit. Utilisez cette méthode pour bloquer jusqu'à un WaitHandle reçoive un signal d’un autre thread, tel qu’est générée lorsqu’une opération asynchrone se termine. Pour plus d’informations, consultez la IAsyncResult interface.

Substituez cette méthode pour personnaliser le comportement des classes dérivées.

Appel de cette surcharge de méthode est le même que l’appel du WaitOne(Int32, Boolean) surcharge et en spécifiant false pour exitContext.

L’exemple de code suivant montre comment utiliser un handle d’attente pour conserver un processus de s’arrêter pendant qu’il attend un thread d’arrière-plan à la fin de l’exécution.

using System;
using System.Threading;

class WaitOne
{
    static AutoResetEvent autoEvent = new AutoResetEvent(false);

    static void Main()
    {
        Console.WriteLine("Main starting.");

        ThreadPool.QueueUserWorkItem(
            new WaitCallback(WorkMethod), autoEvent);

        // Wait for work method to signal.
        if(autoEvent.WaitOne(1000))
        {
            Console.WriteLine("Work method signaled.");
        }
        else
        {
            Console.WriteLine("Timed out waiting for work " +
                "method to signal.");
        }
        Console.WriteLine("Main ending.");
    }

    static void WorkMethod(object stateInfo) 
    {
        Console.WriteLine("Work starting.");

        // Simulate time spent working.
        Thread.Sleep(new Random().Next(100, 2000));

        // Signal that work is finished.
        Console.WriteLine("Work ending.");
        ((AutoResetEvent)stateInfo).Set();
    }
}

Plateforme Windows universelle
Disponible depuis 8
.NET Framework
Disponible depuis 2.0
Bibliothèque de classes portable
Pris en charge dans : plateformes .NET portables
Silverlight
Disponible depuis 2.0
Silverlight pour Windows Phone
Disponible depuis 7.0
Windows Phone
Disponible depuis 8.1
Retour au début
Afficher: