2012-01-31 92 views
0

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

所以使用定时器控制任何替代...

请建议我...

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

+4

我相信这是因为执行过程中出现了一些问题,Timer本身没有问题。所以,只是分享你用于定时器的代码,让我们看看发生了什么 – sll 2012-01-31 11:23:32

+0

我会再次订购事件的Tick事件处理程序。 – 2012-01-31 11:29:25

回答

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

希望这对你有效。

+0

+1聪明的解决方案Amar Bhau ...应该被接受:) – 2013-11-19 06:07:01

+0

很高兴听到它为你工作。 – 2013-11-19 12:30:25

相关问题