【发布时间】:2014-04-04 16:24:25
【问题描述】:
我有这些代码在 Thread 调用的方法上使用 System.Timers.Timer:
private void timeWorker()
{
var timer = new Timer(1000);
timer.Enabled = true;
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
}
public MyConstructor()
{
var thread=new Thread(timeWorker);
thread.IsBackground = true;
thread.Start();
//
thread.Abort();
}
System.Timers.Timer 是否在终止其工作线程时终止?
【问题讨论】:
-
1) 定时器并不真正“属于”创建它们的线程。两者之间没有任何关系。 2) 无论您在做什么,
Thread.Abort几乎肯定 不是 正确答案。但是你没有告诉我们你在这里试图解决什么问题。 -
@Damien_The_Unbeliever 我的问题是我想通过中止线程来确保不再启用计时器。
-
但中止线程本身几乎总是错误。为什么您认为解决问题的最佳方法是中止线程?
-
@Damien_The_Unbeliever 那么你的建议是什么? (我对线程不太熟悉)。
-
如果您只想创建一个计时器,然后稍后停止该计时器的运行,只需创建
Timer对象并将其存储在您的类的字段中。然后,稍后当您想要停止它时,将其Enabled属性设置为false。我完全不明白您为什么要创建Thread-Timer对象当然不需要您创建。
标签: c# .net multithreading timer