Ich habe mich gefragt,neues AutoResetEvent (True) Verwendungen in C#?
Warum würde ich jemals eine true
im Ctor von AutoResetEvent
übergeben möchten?
Ich erstelle ein waitHandle
, so dass jeder, der WaitOne()
anrufen wird tatsächlich warten.
Wenn ich es mit einem true
instanziiere, wird es sein, als ob es sofort signalisiert wurde - das ist wie ein normaler Fluss ohne zu warten.
EventWaitHandle _waitHandle = new AutoResetEvent (false);
void Main()
{
new Thread (Waiter).Start();
Thread.Sleep (1000);
_waitHandle.Set();
Console.ReadLine();
}
void Waiter()
{
Console.WriteLine ("AAA");
_waitHandle.WaitOne();
Console.WriteLine ("BBBB");
}
Ausgang:
AAA...(delay)...BBB
Wechsel zu: EventWaitHandle _waitHandle = new AutoResetEvent (true);
und der Ausgang wird sein:
AAABBB
Frage:
- Warum sollte ich jemals wollen um dies zu tun ? (
true
übergeben)?
Wort "release" ist sehr verwirrend Es scheint, wie Sie Thread CPU-Zeit-Scheibe veröffentlichen, Aber Sie lassen es tatsächlich weiterarbeiten nach '.WaitOne()' call. – newprint
Sie haben Recht, es ist verwirrend. Ich habe einen Kommentar auf dieser Dokumentation Seite hinzugefügt. – jeroenh