如何等待任务完成

时间:2013-10-30 08:58:32

标签: c# .net windows multithreading process

我有一个Windows窗体,我将报告导出为PDF格式。

生成报告后,我希望应用程序完全终止。我添加了Application.Exit()子句,但是这有时会在导出仍然发生时关闭进程。

因此,我想仅在导出完成时关闭应用程序。

我尝试了以下内容:

   while(true) 
   {
    if (Process.GetCurrentProcess().WaitForInputIdle())
    {
        Application.Exit();
    }
   }

以及:

while(true) 
{
    if (Process.GetCurrentProcess().Responding)
    {
        Application.Exit();
    }
}

但是没有工作 - 在导出完成之前,应用程序有时仍会关闭。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

您可以开始在另一个进程中导出并等待它完成(查看相关帖子:Wait till a process ends)。

如果您不想这样,您可以检查导出完成的文件是否存在以及是否已锁定(请查看Wait Until File Is Completely Written)。

答案 1 :(得分:0)

问题在于,如果应用程序旨在响应用户交互,则两种方式都会关闭应用程序,即使它仍然有效。

也许您应该监控应用程序的输出?即:如果存在PDF文件,则完成该过程。或者更确切地说:如果PDF文件存在且未被修改15秒或其他东西,请退出该应用程序。