0

を使用していくつかのことを行う C# プロジェクト (.NET 3.5) がありますBackgroundWorker。このようなものは、実行するすべての操作のログ ファイルを書き込みます。完了したらBackgroundWorker 、ログ ファイルにある情報を取得する必要があります。問題は、RunWorkerCompletedイベントが発生したときに、ログ ファイルがまだ空であることです。したがって、次のようにすると:

private void BackProgress_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
      LoadLog();

}

LoadLogメソッドは空のログを見つけます。

アプリケーションをデバッグしていたところ、最後の中かっこRunWorkerCompletedがヒットした瞬間にログ ファイルが空ではなくなっていることがわかりました。RunWorkerAsync()への呼び出しの直後に行うことはすべてすぐに実行され、BackgroundWorkerの作業はまだ完了していないため (再び空のログ) 、適切なタイミングでログ ファイルをロードする方法がわかりません。

LoadLog基本的に、メソッドが最後に到達した後に正しく呼び出すことができる必要がありますRunWorkerCompleted

この問題で私を助けることができるアイデアはありますか?

前もって感謝します :)

4

1 に答える 1

0

コントロール/フォームのBeginInvokeメソッドを試して、LoadLog を非同期に呼び出すことができます。

このメソッドは、PostMessage を使用して、登録されたメッセージを Windows メッセージ キューに入れ、すぐに戻ります。これが、非同期呼び出しを行う方法です。

このような:

BeginInvoke(new MethodInvoker(LoadLog));
于 2013-03-12T21:40:56.080 に答える