我试图在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类来实现这个目标,但是我也得到了相同的结果。
发布于 2012-04-06 08:07:11
您正在从BackgroundWorker的DoWork委托内部启动一个新线程。当您启动DoWork事件时,为什么不从UI线程启动新进程呢?这在线程安全性和并发性方面要好得多--这也可能是导致问题的根本原因。
https://stackoverflow.com/questions/10040470
复制相似问题