Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

ManualResetEventSlim, classe

Fournit une version allégée de ManualResetEvent.

System.Object
  System.Threading.ManualResetEventSlim

Espace de noms :  System.Threading
Assembly :  mscorlib (dans mscorlib.dll)
[ComVisibleAttribute(false)]
[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true, 
	ExternalThreading = true)]
public class ManualResetEventSlim : IDisposable

Le type ManualResetEventSlim expose les membres suivants.

  NomDescription
Méthode publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreManualResetEventSlim()Initialise une nouvelle instance de la classe ManualResetEventSlim avec "non signalé" comme état initial.
Méthode publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreManualResetEventSlim(Boolean)Initialise une nouvelle instance de la classe ManualResetEventSlim avec une valeur booléenne indiquant si l'état initial doit être défini comme étant signalé.
Méthode publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreManualResetEventSlim(Boolean, Int32)Initialise une nouvelle instance de la classe ManualResetEventSlim avec une valeur booléenne indiquant si l'état initial doit être défini comme étant signalé et un nombre de spins spécifié.
Début
  NomDescription
Propriété publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreIsSetObtient une valeur qui indique si l'événement est défini.
Propriété publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreSpinCountObtient le nombre d'attentes de spins qui se produiront avant de revenir à une opération d'attente basée sur le noyau.
Propriété publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreWaitHandleObtient l'objet WaitHandle sous-jacent pour ce ManualResetEventSlim.
Début
  NomDescription
Méthode publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreDispose()Libère toutes les ressources utilisées par l'instance actuelle de la classe ManualResetEventSlim.
Méthode protégéePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreDispose(Boolean)Libère les ressources non managées utilisées par ManualResetEventSlim et éventuellement les ressources managées.
Méthode publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreEquals(Object)Détermine si l'objet spécifié est identique à l'objet actuel. (Hérité de Object.)
Méthode protégéePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreFinalize Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de nettoyage avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.)
Méthode publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreGetHashCodeSert de fonction de hachage pour un type particulier. (Hérité de Object.)
Méthode publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreGetTypeObtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode protégéePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreMemberwiseCloneCrée une copie superficielle de l'objet Object actuel. (Hérité de Object.)
Méthode publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreResetDéfinit l'état de l'événement comme étant non signalé, ce qui entraîne le blocage des threads.
Méthode publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreSetDéfinit l'état de l'événement comme étant signalé, ce qui permet à un ou plusieurs threads en attente sur l'événement de continuer.
Méthode publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreToStringRetourne une chaîne qui représente l'objet actuel. (Hérité de Object.)
Méthode publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreWait()Bloque le thread actuel jusqu'à ce que le ManualResetEventSlim actuel soit défini.
Méthode publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreWait(CancellationToken)Bloque le thread actuel jusqu'à ce que le ManualResetEventSlim actuel reçoive un signal, tout en observant un CancellationToken.
Méthode publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreWait(Int32)Bloque le thread actuel jusqu'à ce que le ManualResetEventSlim actuel soit défini, à l'aide d'un entier signé 32 bits pour mesurer l'intervalle de temps.
Méthode publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreWait(TimeSpan)Bloque le thread actuel jusqu'à ce que le ManualResetEventSlim actuel soit défini, à l'aide d'un TimeSpan pour mesurer l'intervalle de temps.
Méthode publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreWait(Int32, CancellationToken)Bloque le thread actuel jusqu'à ce que le ManualResetEventSlim actuel soit défini, à l'aide d'un entier signé 32 bits pour mesurer l'intervalle de temps, tout en observant un CancellationToken.
Méthode publiquePris en charge par Bibliothèque de classes portablePris en charge dans .NET pour les applications du Windows StoreWait(TimeSpan, CancellationToken)Bloque le thread actuel jusqu'à ce que le ManualResetEventSlim actuel soit défini, à l'aide d'un TimeSpan pour mesurer l'intervalle de temps, tout en observant un CancellationToken.
Début
RemarqueRemarque

L'attribut HostProtectionAttribute appliqué à ce type ou membre a la valeur de propriété Resources suivante : Synchronization | ExternalThreading. HostProtectionAttribute n'affecte pas les applications bureautiques (qui sont généralement démarrées en double-cliquant sur une icône, en tapant une commande ou en entrant une URL dans un navigateur). Pour plus d'informations, consultez la classe HostProtectionAttribute ou Attributs de programmation et de protection des hôtes SQL Server.

L'exemple suivant montre comment utiliser ManualResetEventSlim : Pour plus d'informations sur l'utilisation de SpinCount et d'autres meilleures pratiques à propos de l'utilisation de ce type, consultez ManualResetEvent et ManualResetEventSlim.


using System;
using System.Threading;
using System.Threading.Tasks;
class MRESDemo
{

    static void Main()
    {
        MRES_SetWaitReset();
        MRES_SpinCountWaitHandle();
    }
    // Demonstrates:
    //      ManualResetEventSlim construction
    //      ManualResetEventSlim.Wait()
    //      ManualResetEventSlim.Set()
    //      ManualResetEventSlim.Reset()
    //      ManualResetEventSlim.IsSet
    static void MRES_SetWaitReset()
    {
        ManualResetEventSlim mres1 = new ManualResetEventSlim(false); // initialize as unsignaled
        ManualResetEventSlim mres2 = new ManualResetEventSlim(false); // initialize as unsignaled
        ManualResetEventSlim mres3 = new ManualResetEventSlim(true);  // initialize as signaled

        // Start an asynchronous Task that manipulates mres3 and mres2
        var observer = Task.Factory.StartNew(() =>
        {
            mres1.Wait();
            Console.WriteLine("observer sees signaled mres1!");
            Console.WriteLine("observer resetting mres3...");
            mres3.Reset(); // should switch to unsignaled
            Console.WriteLine("observer signalling mres2");
            mres2.Set();
        });

        Console.WriteLine("main thread: mres3.IsSet = {0} (should be true)", mres3.IsSet);
        Console.WriteLine("main thread signalling mres1");
        mres1.Set(); // This will "kick off" the observer Task
        mres2.Wait(); // This won't return until observer Task has finished resetting mres3
        Console.WriteLine("main thread sees signaled mres2!");
        Console.WriteLine("main thread: mres3.IsSet = {0} (should be false)", mres3.IsSet);

        // It's good form to Dispose() a ManualResetEventSlim when you're done with it
        observer.Wait(); // make sure that this has fully completed
        mres1.Dispose();
        mres2.Dispose();
        mres3.Dispose();
    }

    // Demonstrates:
    //      ManualResetEventSlim construction w/ SpinCount
    //      ManualResetEventSlim.WaitHandle
    static void MRES_SpinCountWaitHandle()
    {
        // Construct a ManualResetEventSlim with a SpinCount of 1000
        // Higher spincount => longer time the MRES will spin-wait before taking lock
        ManualResetEventSlim mres1 = new ManualResetEventSlim(false, 1000);
        ManualResetEventSlim mres2 = new ManualResetEventSlim(false, 1000);

        Task bgTask = Task.Factory.StartNew(() =>
        {
            // Just wait a little
            Thread.Sleep(100);

            // Now signal both MRESes
            Console.WriteLine("Task signalling both MRESes");
            mres1.Set();
            mres2.Set();
        });

        // A common use of MRES.WaitHandle is to use MRES as a participant in 
        // WaitHandle.WaitAll/WaitAny.  Note that accessing MRES.WaitHandle will
        // result in the unconditional inflation of the underlying ManualResetEvent.
        WaitHandle.WaitAll(new WaitHandle[] { mres1.WaitHandle, mres2.WaitHandle });
        Console.WriteLine("WaitHandle.WaitAll(mres1.WaitHandle, mres2.WaitHandle) completed.");

        // Clean up
        bgTask.Wait();
        mres1.Dispose();
        mres2.Dispose();
    }
}


.NET Framework

Pris en charge dans : 4.5, 4

.NET Framework Client Profile

Pris en charge dans : 4

Bibliothèque de classes portable

Pris en charge dans : Bibliothèque de classes portable

.NET pour les applications du Windows Store

Pris en charge dans : Windows 8

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Tous les membres publics et protégés de ManualResetEventSlim sont thread-safe et peuvent être utilisés simultanément à partir de plusieurs threads, à l'exception de Dispose, qui doit être employé uniquement lorsque toutes les autres opérations exécutées sur ManualResetEventSlim sont terminées, et de Reset, qui doit être employé uniquement si aucun autre thread n'accède à l'événement.

Cela vous a-t-il été utile ?
(1500 caractères restants)

Ajouts de la communauté

AJOUTER
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
© 2013 Microsoft. Tous droits réservés.