Sind Zustandsvariablen & amp; Monitore in C # verwendet?
Kann mir jemand ein Beispiel geben?
Das Äquivalent einer Bedingungsvariablen, die Sie nur für die Signalisierung in .NET verwenden, ist die abstrakte WaitHandle-Klasse. Praktische Implementierungen davon sind die Klassen ManualResetEvent und AutoResetEvent.
Eine Zustandsvariable, die Sie als Monitor verwenden, erfordert System.Threading.Monitor. Die C # lock
-Anweisung macht es sehr einfach zu verwenden, es stellt sicher, dass der Monitor immer beendet wird, ohne den Exit () -Aufruf explizit zu programmieren.
Sie können das Lock-Objekt verwenden, das als syntaktischer Zucker für die Monitor-Klasse fungiert.
%Vor%Als Alternative zu ManualResetEvent und Freunden bietet Windows jetzt native Unterstützung für Bedingungsvariablen. Ich habe es nicht selbst bewertet, aber es besteht eine gute Chance, dass sich Ihre Leistung verbessert, wenn Sie die native API nutzen.
Hier ist ein Code Project-Artikel, der erklärt, wie man von C # aus auf dieses (relativ neue) Konstrukt zugreift:
Ein .NET Wrapper für die Zustandsvariable Vista / Server 2008
Tags und Links c# multithreading monitor