我正在使用Timer控件,我调用了很多函数(即Timer1_Tick事件中的20-30 Sub) 可能是由于在500毫秒的间隔内执行这些多个操作可能应用程序在2-3分钟后没有响应...
因此可以使用定时器控件...
请建议我......
如果我使用多线程,则无法更新其他控件的值/属性。它给出了一个错误
答案 0 :(得分:2)
您可以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 :(得分:0)
您可以使用多线程,但是如果要修改UI线程拥有的控件,则需要使用Control.Invoke
(sync)或Control.BeginInvoke
(async)来执行此操作才能获得与UI线程同步并使用整个控件。