2012-07-16 8 views
8

Czy można sprawdzić, jak faktycznie obrabiano obiekt AutoResetEvent? Czy jest on uruchamiany przez timeout lub przez wywołanie Set() z innej metody?Sprawdź stan AutoResetEvent

Oto mój kod.

private AutoResetEvent autoResetEvent = new AutoResetEvent(false); 
private int timeout = 30000; 

public void SyncMethod() 
{ 
    // some code before 
    autoResetEvent.WaitOne(timeout); 
    // if autoResetEvent called by timeout then { do some stuff } 
    // some code after 
} 
public void AsyncMethod() 
{ 
    // some code before 
    // ok I am done 
    autoResetEvent.Set(); 
} 

Odpowiedz

12

WaitHandle :: WaitOne Sposób (Int32)

Wartość zwracana Typ: System :: Boolean

prawda czy bieżąca instancja odbiera sygnał; w przeciwnym razie false.

Tak, wartość false jest zwracana po przekroczeniu limitu czasu.

+0

Tak łatwo. :) Dziękuję Ci! –