0

我正在尝试在 BackgroundWorker IsBusy 时启动一个新进程。

全球.asax:

BackgroundWorker thread;
protected void Application_Start(object sender, EventArgs e)
{
     StartThread();
}
protected void StartThread()
{
     thread = new BackgroundWorker();
     thread.DoWork += new DoWorkEventHandler(DoWork);
     thread.RunWorkerAsync();
}
private void DoWork(object sender, DoWorkEventArgs e)
{
     Process p = new Process();
     p.StartInfo.FileName = "exe.exe";
     p.Start();
     p.WaitForExit(10000);
}

但是什么也没发生。也没有提出任何例外。我在 p.Start() 行插入了一个断点。一切正常,只是该过程没有开始。

这可能是什么原因?我也尝试为此使用 Thread 类,但我得到了相同的结果。

4

1 回答 1

0

您正在从BackgroundWorkerDoWork委托内部开始一个新线程。当您触发DoWork事件时,为什么不从 UI 线程启动新进程。这在线程安全和并发方面会好得多——这也可能是你问题的根本原因。

于 2012-04-06T08:07:11.907 回答