C#中定时器控制的替代方案是什么.NET

本文关键字:方案 是什么 NET 定时器 控制 | 更新日期: 2023-09-27 18:22:03

我正在使用Timer控件,我调用了很多函数(即Timer1_Tick事件中的20-30 Sub)可能是由于在500毫秒的间隔内执行这些多个操作,可能是应用程序在2-3分钟后没有响应。。

所以有任何使用定时器控制的替代方案。。。

请给我推荐…

如果我使用多线程,那么就不可能更新其他控件的值/属性。它给出一个错误

C#中定时器控制的替代方案是什么.NET

您可以使用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