我有一个C#项目(.NET 3.5),它使用BackgroundWorker
来做一些事情。
这个东西为它执行的所有操作写了一个日志文件。当BackgroundWorker
完成后,我需要检索日志文件中的一些信息。问题是
触发RunWorkerCompleted
事件时,日志文件仍为空。因此,如果我执行以下操作:
private void BackProgress_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
LoadLog();
}
LoadLog
方法将找到一个空日志。
我一直在调试应用程序,我发现在RunWorkerCompleted
中的最后一个大括号被击中的那一刻,日志文件不再是空的。我不知道如何在适当的时候加载日志文件,因为我在调用RunWorkerAsync()
后立即执行的任何操作都会立即执行,BackgroundWorker
的工作仍然无法完成(再次,一个空的日志)。
基本上我需要能够在LoadLog
方法结束后立即致电RunWorkerCompleted
。
你有什么想法可以帮我解决这个问题吗?
提前致谢:)
答案 0 :(得分:0)
您可以尝试使用Control / Form BeginInvoke方法异步调用LoadLog。
此方法使用PostMessage将已注册的消息放在Windows消息队列中并立即返回 - 这就是它如何进行异步调用。
像这样:
BeginInvoke(new MethodInvoker(LoadLog));