Ich habe ein Job-Objekt für lange laufende Operationen, die wie folgt funktioniert:Warum wird BackgroundWorker.OnDoWork nicht aufgerufen?
Class LongRunningJob
Inherits BackgroundWorker
Protected Overrides Sub OnDoWork(ByVal e As System.ComponentModel.DoWorkEventArgs)
'do long running job here
End Sub
End Class
Und ich rufe dies wie folgt:
Dim job As New LongRunningJob
'run it
job.RunWorkerAsync()
Das funktionierte vor einem Jahr in Ordnung, und ich zog nach anderen auf Dinge. Ich musste heute zu diesem Code zurückkehren, und wenn ich es jetzt ausführe, wird die OnDoWork
Überschreibung einfach nicht aufgerufen. Ein Breakpoint dort wird nicht getroffen, Debugging-Nachrichten werden nicht geschrieben, die Methode wird einfach nicht aufgerufen, und nirgends werden Fehler ausgegeben.
Ich kann nicht denken, was hätte sich geändert, dass dies verursachen könnte, da es wie eine Low-Level-Framework-Sache scheint. Der Rest der App wird geladen und läuft gut, das Hauptfenster wird angezeigt (es ist eine WPF-App) und die Ereignisse werden ausgelöst. Es ist nur die Hintergrundthread-Methode, die nicht ausgelöst wird. Was könnte hier vor sich gehen?
Schwer zu beantworten, ohne den gesamten tatsächlichen Code zu sehen. –
BTW, verwenden Sie ein Quellcode-Versionskontrollsystem? –
@MitchWheat: Es wäre schwer zu beantworten, es auch zu sehen, weil es ein großes Projekt ist. Ich bin nicht sicher, was ich schnipsen könnte, um das Problem zu isolieren, und die ganze Sache wäre viel zu viel, um die Leute zu fragen. Re: Quellcode, ja, ich denke, ich könnte zum letzten funktionierenden Code zurückkehren, obwohl ich ihn überhaupt nicht angefasst habe, also vermute ich, dass das Problem irgendwie umweltbedingt ist. –