我正在使用Timer控件,并且我调用了很多函数(即Timer1_Tick事件中的20-30 Sub) 可能由于在500毫秒的时间间隔内执行这些多个操作,可能应用程序在2-3分钟后没有响应。 。什么是C#中定时器控件的替代方法。 NET
所以使用定时器控制任何替代...
请建议我...
如果我使用多线程那么是不是可以更新其他控件的值/属性。它给出了一个错误
我正在使用Timer控件,并且我调用了很多函数(即Timer1_Tick事件中的20-30 Sub) 可能由于在500毫秒的时间间隔内执行这些多个操作,可能应用程序在2-3分钟后没有响应。 。什么是C#中定时器控件的替代方法。 NET
所以使用定时器控制任何替代...
请建议我...
如果我使用多线程那么是不是可以更新其他控件的值/属性。它给出了一个错误
你可以使用多线程,但是如果你想修改UI线程拥有的控件,你需要使用Control.Invoke
(同步)或Control.BeginInvoke
(异步)来完成,以便与UI同步线程并与您的整个控件一起工作。
您可以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(); });
希望这对你有效。
+1聪明的解决方案Amar Bhau ...应该被接受:) – 2013-11-19 06:07:01
很高兴听到它为你工作。 – 2013-11-19 12:30:25
我相信这是因为执行过程中出现了一些问题,Timer本身没有问题。所以,只是分享你用于定时器的代码,让我们看看发生了什么 – sll 2012-01-31 11:23:32
我会再次订购事件的Tick事件处理程序。 – 2012-01-31 11:29:25