C# 无法等待进程运行到结束

C# 无法等待进程运行到结束,c#,.net,multithreading,threadabortexception,C#,.net,Multithreading,Threadabortexception,我在页面后面有一个aspx代码,它使用进程(p)调用应用程序(exe文件),如下代码所示: p.Start(); while(!p.HasExited) { Thread.Sleep(2000); } p.Dispose(); while循环等待2秒,但总是抛出如下异常: System.Threading.ThreadAbortException: Thread was being aborted. at System.Threading.Thread.SleepInternal

我在页面后面有一个aspx代码,它使用进程(p)调用应用程序(exe文件),如下代码所示:

p.Start();
while(!p.HasExited)
{
    Thread.Sleep(2000);
}
p.Dispose();
while循环等待2秒,但总是抛出如下异常:

System.Threading.ThreadAbortException: Thread was being aborted.
   at System.Threading.Thread.SleepInternal(Int32 millisecondsTimeout)
   at Insyma.ContentUpdate.XmlReader.DoSleep()
在语句
Thread.Sleep(2000)
中。 所以任何人都可以帮我解决问题。 非常感谢,请使用AutoResetEvent

class BasicWaitHandle
{
   static EventWaitHandle _waitHandle = new AutoResetEvent (false);
   static void Main()
   {
       new Thread (Waiter).Start();        
       _waitHandle.WaitOne(); //wait for notification
       //Do operartion
   }

   static void Waiter()
   {
      //Do operations
      _waitHandle.Set(); //Unblock
   }
}

似乎你需要一些火和忘记模式。线程正在退出,因为一旦呈现页面,它的实例很容易被释放。。所以这可能就是你需要的

ThreadPool.QueueUserWorkItem(o => FireAway());

private void FireAway()
{
p.Start();
while(!p.HasExited)
{
    Thread.Sleep(2000);
}
p.Dispose();

}
有关更多信息:


关于。

子进程运行多长时间?您是否在
线程中强制父进程结束。睡眠
?为什么不使用内置的
WaitForExit
方法呢?