Ich muss in jeder Schleife mehrere STRING-Werte von meinem Backgroundworker zurückgeben, daher habe ich versucht, den zweiten Parameter von ReportProgress als String-Array zu verwenden. Beispielcode:
%Vor%Es kompiliert, aber zur Laufzeit, in dem Moment, in dem ich versuche, auf die zurückgegebene Zeichenfolge von UserState zuzugreifen, erhalte ich einen Fehler: "Objektreferenz wurde nicht auf eine Instanz eines Objekts gesetzt."
Für mich scheint es, als wäre etwas falsch, wenn der Array-Parameter an den ProgressChanged-Delegaten übergeben wird, oder in der ProgressChanged-Methode, wenn man versucht, Array-Werte für die Ergebnisse festzulegen.
Ihr Code-Snippet kann das Problem nicht reproduzieren. Ein Standardfehler besteht darin, ReportProgress () aufzurufen und dann mit dem Ändern des Objekts fortzufahren. Es dauert eine Weile, bis der Event-Handler ausgeführt wird. Es wird das geänderte Objekt und nicht das Original angezeigt. Sie vermeiden dies, indem Sie einfach ein neues Objekt erstellen, so dass der Event-Handler immer mit dem Original arbeitet. So:
%Vor%Beachten Sie, wie die Array-Erstellungsanweisung innerhalb der Schleife verschoben wird.
Tags und Links .net c# backgroundworker