嗨,我已經進入了一些與定時器有關的問題。 希望有人能幫助..從c中的不同線程啓動一個定時器#
- 我有一個包含一個按鈕
- 當我點擊該按鈕,我開始一個參數化的螺紋
Thread thread1 = new Thread(new ParameterizedThreadStart(execute2));
thread1.Start(externalFileParams);
- 代碼Windows窗體裏面的線程執行得非常好
- 在這個線程的最後一行我開始一個計時器
。
public void execute2(Object ob)
{
if (ob is ExternalFileParams)
{
if (boolean_variable== true)
executeMyMethod();//this also executes very well if condition is true
else
{
timer1.enabled = true;
timer1.start();
}
}
}
}
5,但計時器的Tick事件不會觸發
我的工作在VS2008 3.5框架。我從工具箱中拖定時器並設置其Interval
300也試圖設置Enabled
真/假 方法是timer1_Tick(Object sender , EventArgs e)
但它沒有被解僱
任何人可以提出什麼,我做錯了什麼?
這是最不可能的,這是實現你想要的最好的方式 - 如果你有一個長期運行的任務,需要更新進度的表單,那麼BackgroundWorker是一個很好的方法來做到這一點。如果你需要更多的手動控制,那麼一個池線程(看看ThreadPool.QueueUserWorkItem)比創建你自己的線程要好。 – 2011-04-20 07:58:29
您需要在其主機窗體/控件的線程上調用timer.start,但這是一種尷尬的方式。使用'Control.BeginInvoke'來調用合適的委託。 – Jodrell 2011-04-20 09:01:14