Ich bin ein wenig verwirrt über ein ManualResetEvent, das ich verwende, die nicht zu entsperren scheint. Wer weiß, warum dies der Fall sein könnte?ManualResetEvent WaitOne nicht entsperren
Das Szenario, das ich habe, ist etwas in dieser Richtung. Die tatsächliche Situation ist ziemlich kompliziert und es ist mir nicht gelungen, einen Codeabschnitt zu isolieren, der posten kann, um das Problem zu reproduzieren.
BEARBEITEN
Ich habe das Codebeispiel unten aktualisiert. Dies wird in einer Reihe von verschiedenen Dialogen ausgeführt und ich habe festgestellt, dass einer von ihnen die this.mre.WaitOne() trifft; Dann, was passiert ist, bekomme ich einen "Server Busy" -Dialog, wo ich auf "Switch to" oder "Retry" drücken muss, was meinem Code erlaubt, den WaitOne() - Aufruf zu bestehen und alles wird funktionieren. Ich bin mir nicht sicher, wie es relevant ist, aber offensichtlich ist es wichtig.
Ist Sie 'wc_DownloadFileCompeted' Methode aufgerufen wird? –
Jon, ja, ist es. Ich komme direkt zu Set(), das gut ausgeführt wird, aber mein Haupt-Thread blockiert immer noch. Das Beispiel wurde vereinfacht, aber wenn ich Set() an anderer Stelle aufrufen (zum Beispiel habe ich einen Dialog, mit einem Abbrechen-Button, der auch ein Ereignis hat. Dann die Set() -Methode in meinem Lambda diesem Ereignis beigefügt funktioniert gut). – Ian
divo, das Set() wird höchstwahrscheinlich von einem separaten Thread aufgerufen, da ich davon ausgehe, dass der WebClient einen neuen erstellen muss, um die Datei tatsächlich herunterzuladen. Es ist der Thread, den der WebClient verwendet, um sein Ereignis zu senden, das Set() aufrufen wird. – Ian