2013-06-21 45 views
0

如何在沒有啓動所述程序本身的情況下打開程序/進程時啓動代碼來激活代碼。C#等待Progam /進程啓動

現在我有這樣的代碼:

while (!IsProcessOpen("ThisProcess")) //"IsProcessOpen" just checks whether the program stated is open in the task manager. 
{ 

} 
gopatch.DoWork += new DoWorkEventHandler(gopatch_DoWork); 
gopatch.RunWorkerCompleted += new RunWorkerCompletedEventHandler(gopatch_RunWorkerCompleted); 
gopatch.RunWorkerAsync(); 

但這種方式使用太多的CPU。有沒有辦法讓它使用更少的CPU,但完成工作,因爲我想要它?

+0

使用WMI異步處理事件。 – SLaks

回答

1

您可以在while循環中使用Thread.Sleep方法來防止CPU消耗過多。這不是最佳的,但很簡單。如果你需要更好的東西,請嘗試使用事件。 This page描述瞭如何使用ManagementEventWatcher這樣做。

+0

我會用鉤子和上面的代碼去。讓一個事件處理程序在新進程啓動時觸發,然後檢查當時是否正在運行所需的程序。 http://msdn.microsoft.com/en-us/magazine/cc188966.aspx –

+0

ManagementEventWatcher是最乾淨的方式。 –