C#System.Timers.Timer如何命名其线程

时间:2015-03-04 12:32:37

标签: c# multithreading logging timer

这是我的主要方法:

   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;
    }

这是一个简单的过去事件:

    private void OnTimedEvent(object source, ElapsedEventArgs e)
       log.Info("My log system need the name of my thread");
    }

问题1:

如何命名计时器的线程?我需要这个用于记录目的,详细地说我想命名Elapsed事件的线程。

问题2:

在多个计时器创建的情况下,我能确定每个计时器会有一个专用线程吗?

1 个答案:

答案 0 :(得分:0)

我也在想这个。不确定如何站立,但是为什么不做这样的事情:

private void OnTimedEvent(object source, ElapsedEventArgs e)
   System.Threading.Thread.CurrentThread.Name = "CustomThreadName-" + System.Threading.Thread.CurrentThread.ManagedThreadId;
   log.Info("My log system need the name of my thread");
}

在conversionPattern中使用'%thread'时,Log4Net将在日志中忠实地显示“ CustomThreadName -...”。 ManagedThreadId将至少为您提供日志的唯一性。