Hoe kan ik zien in welke staat ManualResetEvent zich bevindt?

Ik gebruik een instantie van ManualResetEventom threadtoegang tot een bron te regelen, maar ik ondervind er problemen mee. Weet iemand hoe ik er tijdens het debuggen achter kan komen wat de staat van het object is?

Dat wil zeggen dat ik zou willen weten of de ManualResetEventmomenteel threads blokkeert en misschien zelfs hoeveel en welke threads het blokkeert.


Antwoord 1, autoriteit 100%

Voer een WaitOneuit op de gebeurtenis met een time-outwaarde van nul.

Het zal true retourneren als de gebeurtenis is ingesteld, of false als de time-out optreedt.
Met andere woorden, waar -> gebeurtenis is ingesteld, false -> evenement is niet ingesteld.


Antwoord 2, autoriteit 6%

Hier is werkende code:

private ManualResetEvent pause = new ManualResetEvent(false);
pause.WaitOne(); // caller thread pauses
pause.Set();    // another thread releases paused thread
// Check pause state
public bool IsPaused { get { return !pause.WaitOne(0); } }

Antwoord 3

U kunt functieaanroepen doen in het Debugger Watch-venster.
Voeg een aanroep toe aan mreVariable.WaitOne(0)in het Watch-venster en kijk waar het naar evalueert.
Opmerking: u moet dit niet gebruiken voor AutoResetEvents, omdat dit de werkelijke status zou kunnen veranderen.

Other episodes