我正在使用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