等待后台worker完成调用方法
本文关键字:调用 方法 后台 worker 等待 | 更新日期: 2023-09-27 18:09:58
我有一个后台工作人员复制一些文件。在它完成文件复制后,我想启动一个应用程序。我遇到的问题是,当文件正在复制时,它调用代码来启动应用程序,因此它会遇到文件使用错误。我是否可以做一个检查,以确保某个方法只在后台工作人员完成后才被调用?
private void LaunchApplication(string targetPath, string targetExecutable)
{
CopyFiles();
Process.Start(Path.Combine(targetPath, targetExecutable));
}
CopyFiles在BackGroundWorker的DoWork方法中被调用。我希望在Process.Start之前完成这个。被称为。现在我有几个可执行文件绑在几个按钮上,所以我不能把Process.Start…
如果你把CopyFiles()
放在后台线程中,下一行代码将被执行,所以在你的情况下,我将而不是使用后台工作线程。相反,我会阻塞,直到复制文件完成,然后启动应用程序。设置一个窗口,告诉你的用户等一会儿。
如果您需要等待并且仍然使用后台工作器,那么CopyFiles()
应该在DoWork
处理程序中,Process.Start
应该在BackgroundWorker.RunWorkerCompleted
事件中。
RunWorkerCompleted上的MSDN
RunWorkerCompleted
完成时堆栈溢出示例:
运行Worker完成样例代码
另外,你可以创建一个全局互斥锁来确保一次只发生一个启动,所以如果你有多个启动,只有一个会被处理。
Stack Overflow Global Mutex Question