-3

我正在使用 System.Times.Timer 来监视进程,这将定期调用一个方法。但是我面临一个问题,即调用是使用多线程完成的。如果我删除计时器,那么它将作为 STA 工作。使用 Timer,当我调用 ElapsedMethod 调用另一个函数时,它会更改为 MTA,这最终会导致我出现异常。

4

2 回答 2

2

更改System.Timers.TimerSystem.Windows.Forms.Timer,所有操作都将在 UI 线程上执行。

如果你不想这样做,那么你可以设置SynchronizingObjectthis. 因为当 SynchronizingObject 为 null 时,处理 Elapsed 事件的方法会在系统线程池中的一个线程上调用

于 2013-08-30T07:58:17.023 回答
2

System.Timers.Timer有一个SynchronizingObject属性,您可以将其设置为将事件编组到 UI 线程。将其设置为表单。那是:

System.Timers.Timer Timer1 = new System.Timers.Timer();
Timer1.SynchronizingObject = this;
// add other Timer initialization here
于 2013-08-30T13:44:30.337 回答