我正在測試以下內容並試圖瞭解它如何將其應用於我的實時應用程序。該應用程序似乎有或沒有.SynchronizingObject = this;
。我看了MSDN,但可以做一個替代的解釋,這條線做什麼,爲什麼我需要包括它?這是防守加成嗎? 「.SynchronizingObject = this;」
private void btRunProcessAndRefresh_Click_1(object sender, EventArgs e) {
//instantiate a new process and tell it where to find file
myProcess =new Process();
myProcess.StartInfo.FileName [email protected]"notepad.exe";
//creates an action to execute when the event exits
myProcess.Exited +=new EventHandler(MyProcessExited);
myProcess.EnableRaisingEvents =true;
//myProcess.SynchronizingObject =this;
elapsedTime = 0;
myProcess.Start();
myTimer =new System.Windows.Forms.Timer();
myTimer.Tick +=new EventHandler(TimerTickEvent);
myTimer.Interval = SLEEP_AMOUNT;
myTimer.Start();
}
private void MyProcessExited(Object source,EventArgs e) {
myTimer.Stop();
}
private void TimerTickEvent(Object myObject,EventArgs myEventArgs) {
myTimer.Stop();
elapsedTime += SLEEP_AMOUNT;
if (elapsedTime > MAXIMUM_EXECUTION_TIME)
myProcess.Kill();
else
myTimer.Start();
}
要正確響應,您應該顯示您的MyProcessExited方法。 SynchronizingObject需要確保您的_MyProcessExited_方法將在窗體的同一線程上調用。否則,如果您打算在該方法內的UI中更改某些內容,則需要採取額外的措施。 – Steve 2012-03-16 09:06:33
本地MSDN的URL根本沒有意義。 – abatishchev 2012-03-16 09:12:37
@steve - 我現在將提供完整的代碼 – whytheq 2012-03-16 11:46:00