【发布时间】:2013-06-06 02:02:59
【问题描述】:
您好,我遇到了一些与计时器相关的问题。 希望有人能帮忙..
- 我有一个包含按钮的 Windows 窗体
- 当我单击该按钮时,我会启动一个参数化线程
Thread thread1 = new Thread(new ParameterizedThreadStart( execute2));
thread1.Start(externalFileParams);
- 线程内的代码执行得很好
- 在这个线程的最后一行我启动了一个计时器
.
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 但定时器的滴答事件没有被触发
我正在开发 VS2008 3.5 框架。我已从工具箱中拖出计时器并将其Interval 设置为 300 也尝试设置Enabled true/false
方法是 timer1_Tick(Object sender , EventArgs e) 但它没有被解雇
谁能建议我做错了什么?
【问题讨论】:
-
这不太可能是实现您想要的最佳方式 - 如果您有一个长时间运行的任务需要更新表单的进度,那么 BackgroundWorker 是一个很好的方法。如果您需要更多的手动控制,那么池线程(查看 ThreadPool.QueueUserWorkItem)比创建自己的线程更好。
-
您需要在其宿主窗体/控件的线程上调用 timer.start,但这是一种尴尬的方式。使用
Control.BeginInvoke调用适当的代表。
标签: c# multithreading visual-studio-2008 timer