Bedingungsvariablen in C # [geschlossen]

8

Sind Zustandsvariablen & amp; Monitore in C # verwendet?

Kann mir jemand ein Beispiel geben?

    
Tony The Lion 31.12.2009, 16:37
quelle

5 Antworten

12

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.

    
Hans Passant 31.12.2009, 16:50
quelle
4

System.Threading.Monitor ist eine Möglichkeit (Beispiel innerhalb)

    
jspcal 31.12.2009 16:41
quelle
3

Sie können das Lock-Objekt verwenden, das als syntaktischer Zucker für die Monitor-Klasse fungiert.

%Vor%

Ссылка

    
Brett Allen 31.12.2009 16:39
quelle
2

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

    
kgriffs 08.02.2011 20:18
quelle
0

Diese Version schaltet automatisch einen Mutex oder ReaderWriterLockSlim frei, während sie auf Signalisierung wartet, und verriegelt sie vor der Rückkehr - was der Posix-Weg ist.

%Vor%     
Brent 01.11.2014 13:52
quelle

Tags und Links