不能等待进程运行直到结束
本文关键字:结束 运行 等待 进程 不能 | 更新日期: 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# ?
问候。