什么是C#中Timer控件的替代方案。净

时间:2012-01-31 11:20:57

标签: c#

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

因此可以使用定时器控件...

请建议我......

如果我使用多线程,则无法更新其他控件的值/属性。它给出了一个错误

2 个答案:

答案 0 :(得分:2)

您可以BackgroundWorkerMSDN)对您的工作进行以下扩展

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(); });

希望这适合你。

答案 1 :(得分:0)

您可以使用多线程,但是如果要修改UI线程拥有的控件,则需要使用Control.Invoke(sync)或Control.BeginInvoke(async)来执行此操作才能获得与UI线程同步并使用整个控件。