C#中定时器控制的替代方案是什么.NET
本文关键字:方案 是什么 NET 定时器 控制 | 更新日期: 2023-09-27 18:22:03
我正在使用Timer控件,我调用了很多函数(即Timer1_Tick事件中的20-30 Sub)可能是由于在500毫秒的间隔内执行这些多个操作,可能是应用程序在2-3分钟后没有响应。。
所以有任何使用定时器控制的替代方案。。。
请给我推荐…
如果我使用多线程,那么就不可能更新其他控件的值/属性。它给出一个错误
您可以使用BackgroundWorker
(MSDN)对您的工作进行以下扩展
public static class ControlExtensions
{
public static void Invoke(this Control control, Action action)
{
if (control.InvokeRequired) control.Invoke(new MethodInvoker(action), null);
else action.Invoke();
}
}
然后要更改UI(UI线程)上的任何内容,您可以执行
btnGo.Invoke(() => { btnGo.Text = "Done"; });
prgBar.Invoke(() => { prgBar.PerformStep(); });
希望这对你有用。
您可以使用多线程,但如果您想修改UI线程拥有的控件,则需要使用Control.Invoke
(sync)或Control.BeginInvoke
(async)来完成,以便与UI线程同步并使用整个控件。
- 控件。调用:http://msdn.microsoft.com/en-us/library/zyzhdc6b.aspx
- Control.BeginVoke:http://msdn.microsoft.com/en-us/library/system.windows.forms.control.begininvoke.aspx