2012-01-31 65 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

相關問題