嗨,我已经进入了一些与定时器有关的问题。 希望有人能帮助..从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