Ik gebruik een instantie van ManualResetEvent
om 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 ManualResetEvent
momenteel threads blokkeert en misschien zelfs hoeveel en welke threads het blokkeert.
Antwoord 1, autoriteit 100%
Voer een WaitOne
uit 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.