2012-04-06 6 views
0

BackgroundWorker IsBusy 때 새 프로세스를 시작하려고합니다.Process.Start in BackgroundWorker

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 클래스를 사용하려고 시도했지만 동일한 결과가 나타납니다.

+0

[Process.Start()'메소드의'bool' 결과를 확인해야합니다. (http://msdn.microsoft.com/en-us/library/e8zac0ca(v=80) .aspx). –

+1

Process.Start()의 결과는 TRUE와 같습니다. –

답변

0

BackgroundWorker 님의 DoWork 대리인 내부에서 새 스레드를 시작하려고합니다. DoWork 이벤트를 시작하면 UI 스레드에서 새 프로세스를 시작하십시오. 스레드 안전성과 동시성면에서 훨씬 더 좋을 것입니다. 이것은 또한 문제의 근본 원인이 될 수 있습니다.

+0

시작하려는 프로세스는 항상 서버에서 작동해야합니다. –