web-dev-qa-db-fra.com

C # équivalent à l'attente et la notification de Java?

Je suis conscient que vous pouvez verrouiller un objet en c # à l'aide de verrou, mais pouvez-vous abandonner le verrou et attendre que quelque chose d'autre vous informe qu'il a changé comme vous pouvez le faire dans Java avec wait and notify?

Il me semble que synchronisé et verrouillé Java et c # respectivement sont synonymes.

52
Omar Kooheji

La fonctionnalité équivalente (y compris le verrouillage normal) se trouve dans la classe Monitor .

foo.notify() => Monitor.Pulse(foo)
foo.notifyAll() => Monitor.PulseAll(foo)
foo.wait() =>  Monitor.Wait(foo)

L'instruction lock en C # équivaut à appeler Monitor.Enter et Monitor.Exit avec un bloc try/finally approprié.

Voir mon tutoriel de threading ou celui de Joe Albahari pour plus de détails.

91
Jon Skeet

Je pense que les poignées d'attente peuvent fonctionner pour vous. Voyez si this aide.

1
EBGreen