0

我有一个 C# 项目(.NET 3.5),它使用 aBackgroundWorker来做一些事情。这个东西为它执行的所有操作写了一个日志文件。完成BackgroundWorker 后,我需要检索日志文件中的一些信息。问题是当RunWorkerCompleted事件被触发时,日志文件仍然是空的。因此,如果我执行以下操作:

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

}

LoadLog方法将找到一个空日志。

我一直在调试应用程序,发现在最后一个大括号RunWorkerCompleted被命中的那一刻,日志文件不再为空。我不知道如何在适当的时候加载日志文件,因为我在调用后立即执行的任何操作RunWorkerAsync()都会立即执行,并且BackgroundWorker' 的工作仍然不会完成(再次,一个空日志)。

基本上我需要能够在方法结束LoadLog后立即调用。RunWorkerCompleted

你有什么想法可以帮助我解决这个问题吗?

提前致谢 :)

4

1 回答 1

0

您可以尝试使用 Control/Form BeginInvoke方法异步调用 LoadLog。

此方法使用 PostMessage 将已注册的消息放入 Windows 消息队列并立即返回 - 这就是它进行异步调用的方式。

像这样:

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