C# C语言中的定时器与多线程#

C# C语言中的定时器与多线程#,c#,multithreading,winforms,timer,C#,Multithreading,Winforms,Timer,我正在使用System.Times.Timer监视一个进程,这将定期调用一个方法。但是我面临一个问题,调用是使用多线程完成的。如果我移除计时器,那么它将作为STA工作。使用Timer,当我调用ElapsedMethod调用另一个函数时,它将更改为MTA,这将在最后导致我出现异常。将System.Timers.Timer更改为System.Windows.Forms.Timer,所有操作都将在UI线程上执行 如果不想这样做,可以将同步对象设置为this。因为当SynchronizingObject

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

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


如果不想这样做,可以将
同步对象设置为
this
。因为当SynchronizingObject为null时,将对系统线程池中的线程调用处理已用事件的方法。Timers.Timer有一个属性,您可以将该属性设置为将事件封送到UI线程。将其设置为表单。即:

System.Timers.Timer Timer1 = new System.Timers.Timer();
Timer1.SynchronizingObject = this;
// add other Timer initialization here

例外情况是什么?这是
System.Windows.Forms.Timer