从另一个线程(.Net)调用Windows窗体

嗨,我正在开发.Net应用程序,我想实现以下目标:

我有一个winforms应用程序和一个计时器(System.Timers.timer),它根据计划排除了一个线程。 问题是我无法从辅助线程(WorkerThread)访问UI(窗体),错误说不能从没有创建它的线程访问该组件。

有没有办法实现这个目标?

谢谢!

formObject.Invoke(delegate { // action to perform on UI thread }); 

假设您的worker方法(在线程中执行)是

 DoWork(args) { ... UpdateUI(); } 

处理计时器的Elapsed事件的方法应该这样做:

 OnTimerElapsed(object sender, ElapsedEventArgs e) { args = GetArgs(); this.BeginInvoke(() => DoWork(args)); // 'this' refers to form here. // You can also use BeginInvoke on a user control for updating it. } 

这将在单独的线程中运行DoWork,DoWork将具有更新UI的能力。