如何立即中止Timer WinForm程序,使用了Timer控件,每次时间到触发Elapsed 事件。现在的问题是,假如触发的Elapsed 事件需要处理很长的时间,可能在不断的存取数据库,需要花费1个小时,而程序运行了20分钟我想让Timer这个线程立刻停下来,该怎么做?如果执行Stop的话,也只是在Elapsed 事件完毕后不继续触发而已。如何能保证Timer的事件在运行时立刻停止呢?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 多用一个Timer控件或多用几个Timer控件啦当一个事件触发的时候,某个Timer控件就开始计时,另外的某个Timer控件就停止 楼上的解决方案似乎和我需要的不一样?总之没明白,我是一个Timer在运行时需要立刻结束当前事件,不等待事件处理完,相当于立刻中止线程按你说的多用几个Timer控件,似乎是不能做到这样的,Timer可以停止,但仅能停止不再计时触发,但是已经开始的触发是会继续运行结束的 在timer事件里启动线程。用线程做想做的事情。想停止的时候直接kill掉不过操作数据库的时候最好在循环里设标志位,停止之后关闭连接 不要用timer,自己用线程控制就行了~~~ 如此看来只好先在Timer里用线程了不过我觉得Timer本事就是起一个线程,能否在主程序里得到它起的线程Kill掉呢?那样就不用在Timer事件内起线程了,不知道这样可以么 可以试试2。0里面那个单线程的进程控件,用线程不错的,但是很容易出错什么,没有明白,system.windows.form.timer??写出来看看嘛,lz和我有同样的需求 timer是不会另起线程的timer和主窗口的threadid相同private void Form1_Load(object sender, EventArgs e){ this.textBox1.Text = System.Threading.Thread.CurrentThread.ManagedThreadId.ToString();}private void timer1_Tick(object sender, EventArgs e){ this.textBox2.Text = System.Threading.Thread.CurrentThread.ManagedThreadId.ToString();} TO vosov :Timer是会起一个线程的吧,不过我不知道它们的线程id为什么相同。按照MSDN的说法,Timer触发的Elapsed 事件在 ThreadPool 线程上引发。如果 Elapsed 事件的处理时间比 Interval 长,在另一个 ThreadPool 线程上将会再次引发此事件。因此,事件处理程序应当是可重入的。我的程序里Timer触发的Elapsed 事件是非常耗时的,不过界面没停止响应,所以应该不是一个线程上的,所以我考虑得到这个线程的可能性? [求助啊求助]懂sql语句操作EXCEL的来帮帮忙 请问各位研究过orchard的大虾。 关于FCK编辑器 在有框架时候的问题100分 JavaScript文件引入网页时的超奇怪问题,大家过来看看! 求教“实现接口”和“显式实现接口”的区别(小弟分数不多) 求助!控件线程安全Invoke造成死锁的问题. C#或C++ 读取文件属性中的各个tab下的值 请问一个小问题!做水晶报表的时发现工具一栏里的-字段管理器不见了! 关于c#的接口问题:代码是书上的...提示错误啊 这段代码有没有得简化 Remoting /Com+的事务处理心得(共享) 关于C#写的Windows服务
当一个事件触发的时候,某个Timer控件就开始计时,另外的某个Timer控件就停止
按你说的多用几个Timer控件,似乎是不能做到这样的,Timer可以停止,但仅能停止不再计时触发,但是已经开始的触发是会继续运行结束的
不过我觉得Timer本事就是起一个线程,能否在主程序里得到它起的线程Kill掉呢?那样就不用在Timer事件内起线程了,不知道这样可以么
timer和主窗口的threadid相同private void Form1_Load(object sender, EventArgs e)
{
this.textBox1.Text = System.Threading.Thread.CurrentThread.ManagedThreadId.ToString();
}private void timer1_Tick(object sender, EventArgs e)
{
this.textBox2.Text = System.Threading.Thread.CurrentThread.ManagedThreadId.ToString();
}
Timer是会起一个线程的吧,不过我不知道它们的线程id为什么相同。
按照MSDN的说法,Timer触发的Elapsed 事件在 ThreadPool 线程上引发。如果 Elapsed 事件的处理时间比 Interval 长,在另一个 ThreadPool 线程上将会再次引发此事件。因此,事件处理程序应当是可重入的。
我的程序里Timer触发的Elapsed 事件是非常耗时的,不过界面没停止响应,所以应该不是一个线程上的,所以我考虑得到这个线程的可能性?