寻求能在线程里运行Timer的方法。。

lihui5888 2007-08-22 10:07:12
private void button1_Click(object sender, EventArgs e)
{
Thread mainthread = new Thread(main);
mainthread.Start();


}

private void timer1_Tick(object sender, EventArgs e)
{
timer1.Enabled = false;
this.test();
timer1.Enabled = true;

}
private void main()
{
timer1.Interval = 3000;//5000毫秒,即5秒执行一次
timer1.Start();
}
private void test()
{


int n = 5;
while (n > 0)
{
Thread.Sleep(1000);
MessageBox.Show(n.ToString());
n--;
}

}

上面这段代码是想在一个线程里用Timer实现要的功能 可是程序走到timer1.start()之后不继续执行 也就是说不能激发timer1_Tick()运行 为什么哦?
...全文
145 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Moosdau 2007-08-22
  • 打赏
  • 举报
回复
二楼 zhangzh2003(人有多大胆,地有多大产) 正解.
lihui5888 2007-08-22
  • 打赏
  • 举报
回复
大致晓得问题了 我这个用的是windows.timer 他只能工作在ui线程中 有人可以给我讲下threading.timer和timer.timer的区别吗?
lihui5888 2007-08-22
  • 打赏
  • 举报
回复
你在线程的函数里面动态挂一个事件处理函数看看
timer1.Interval = 3000;//5000毫秒,即5秒执行一次
timer1.Tick += new EventHandler(timer1_Tick);
timer1.Start();

这样也不行啊
newtimmy 2007-08-22
  • 打赏
  • 举报
回复
你在线程的函数里面动态挂一个事件处理函数看看
timer1.Interval = 3000;//5000毫秒,即5秒执行一次
timer1.Tick += new EventHandler(timer1_Tick);
timer1.Start();
lihui5888 2007-08-22
  • 打赏
  • 举报
回复
错误 1 “System.Windows.Forms.Timer”并不包含“InvokeRequired”的定义 G:\project\WindowsApplication3\WindowsApplication3\Form1.cs 57 29 WindowsApplication3
liuchuan98 2007-08-22
  • 打赏
  • 举报
回复
你用的是timer控件吧,如果不是在主线程中调用控件需要用到控件的Invoke方法。
lihui5888 2007-08-22
  • 打赏
  • 举报
回复
郁闷 我好象没有说我要调用什么控件 我要的是使我的timer在新线程中能正常运行
北京的雾霾天 2007-08-22
  • 打赏
  • 举报
回复
你要使用this.Invoke来从其它线程调用本线程中的控件。
lihui5888 2007-08-22
  • 打赏
  • 举报
回复
没有人帮下吗?》
zhangzh2003 2007-08-22
  • 打赏
  • 举报
回复
Control.CheckForIllegalCrossThreadCalls = false;

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧