【发布时间】:2015-03-04 12:32:36
【问题描述】:
这是我的主要方法:
public static void main(){
var timer1=createDebounceTimer("TIMER1");
var timer2=createDebounceTimer("TIMER2");
}
这是我的计时器构建代码:
private System.Timers.Timer createDebounceTimer(string threadName){
var debounceTimer = new System.Timers.Timer(debounce * 1000);
debounceTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
debounceTimer.AutoReset = false;
//here I need to name the timer with threadName var
return debounceTimer;
}
这是一个简单的 elapse 事件:
private void OnTimedEvent(object source, ElapsedEventArgs e)
log.Info("My log system need the name of my thread");
}
问题 1:
如何给定时器的线程命名?我需要这个来记录日志,详细来说我想命名 Elapsed 事件的线程。
问题 2:
如果创建多个计时器,我能否确定每个计时器会有一个专用线程?
【问题讨论】:
-
您可以从 System.Timers.Timer 继承并添加您自己的属性(名称)。
-
在线程池线程上调用 Elapsed 事件处理程序。您无法保证下次它会是完全相同的线程。如果这很重要,那么您需要停止使用 Timer 类,并使用在调用 Sleep() 时循环的 Thread 类自己做点什么。这是不明智的,线程是非常昂贵的对象。
标签: c# multithreading logging timer