我在页面后面有一个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)
。
所以任何人都可以帮我解决一些问题。
非常感谢,
答案 0 :(得分:3)
使用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
}
}
答案 1 :(得分:1)
好像你需要一些Fire和Forget模式。线程正在退出,因为一旦页面被渲染,它的实例很容易被处理..所以这可能是你需要的。
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
Simplest way to do a fire and forget method in C#?
问候。