Process.Start在BackgroundWorker中

时间:2012-04-06 07:26:18

标签: asp.net multithreading asynchronous

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

的Global.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类,但我得到了相同的结果。

1 个答案:

答案 0 :(得分:0)

您正在BackgroundWorker的{​​{1}}代表内部开始一个新主题。当您触发DoWork事件时,为什么不从UI线程启动新进程。这在线程安全性和并发性方面要好得多 - 这也可能是导致问题的根本原因。