我正在测试以下内容,并试图了解它的作用,然后将其应用于我的实时应用程序。该应用似乎可以使用.SynchronizingObject = this;
或不使用ojit_code。我看过MSDN,但可以用另一种方式解释此行的作用以及为什么需要包含它?
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 =@"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();
}
最佳答案
参见MSDN
如果您在控制台应用程序中执行代码序列,则可能不需要设置SynchronizingObject。但是如果要从Exited事件处理程序访问UI,则必须设置此成员。