HintergrundMonitor.Wait zunächst gesperrt?
ich eine Anwendung zu schreiben, ich versuche, die die folgenden:
- ich einen Methodenaufruf zu
SomeBlockingMethod
machen. - Diese Methode ruft Blöcke auf, bis ich
SomeUnblockingMethod
von einem anderen Thread aufrufen. WennSomeUnblockingMethod
aufgerufen wird, wird die Routine inSomeBlockingMethod
fortgesetzt.
Hinweis, das erste, was ich tun wird, um die SomeBlockingMethod
zu nennen, und dann später werde ich die SomeUnblockingMethod
nennen. Ich denke darüber nach, einen Monitor.Wait/Monitor.Pulse
Mechanismus zu verwenden, um dies zu erreichen. Die einzige Sache ist, wenn man Monitor.Wait
aufruft, kann man initial nicht blockieren, es sei denn die object
Beteiligung wurde schon durch etwas anderes (oder mindestens nicht, dass ich weiß) von ... gesperrt, aber ich möchte blockieren, um die zuerst zu sein, was ich tun ... Also das führt mich in meine Frage ...
Frage
gibt es irgendeine Weise, die ich Monitor.Wait
implementieren kann, um zunächst blockiert, bis ein Aufruf an Monitor.Pulse
gemacht wird?
@Sinatr vielleicht war ich verwirrend eingeben ... Lassen Sie mich dies versuchen. Wird zu dir zurückkommen. – Snoopy
Sie möchten die Überladung von [Monitor.Wait()] (https://msdn.microsoft.com/en-us/library/syehfawa (v = vs.110) .aspx) verwenden, wo Sie eine Zeitüberschreitung festlegen können (z. B. [Infinity] (https://msdn.microsoft.com/en-us/library/system.threading.timeout.infinite (v = vs.110) .aspx)). – Sinatr
@Sinatr ja, du hast Recht ... Da ich anfangs blockiere, ist das eine gute Idee. – Snoopy