不能等待进程运行直到结束

本文关键字:结束 运行 等待 进程 不能 | 更新日期: 2023-09-27 18:19:00

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

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

while循环等待2s,但总是抛出如下异常:

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();
}

更多信息:http://weblogs.asp.net/albertpascual/archive/2009/05/14/fire-and-forget-class-for-asp-net.aspx

最简单的方法做一个火灾和忘记方法在c# ?

问候。