简体   繁体   English

在C#中的另一个计时器中使用计时器

[英]Use Timer in another Timer in C#

I have a windows service project with this code: 我有一个使用此代码的Windows服务项目:

 protected override void OnStart(string[] args)       
 {  
      InitializeScheduler(); 
      var timer = new Timer {Interval = 10 * 60 * 1000};
      timer.Elapsed += (ss, ee) => InitializeScheduler();
      timer.Start(); 
 }
 private void InitializeScheduler()
 {
      _taskScheduler = new TaskScheduler() { Enabled = true };
      // do something
 }

in TaskScheduler class: 在TaskScheduler类中:

private Timer _triggerTimer;
        public TaskScheduler()
        {            
            _triggerTimer = new Timer(1000);
            _triggerTimer.Elapsed += (TriggerTimerTick);
        }

When I instance "TaskScheduler" in "InitializeScheduler()", _triggerTimer is not dispose and add another timer. 当我在“ InitializeScheduler()”中实例“ TaskScheduler”时,_triggerTimer不会被处置,而添加另一个计时器。 How can I dispose it and restart all things in InitializeScheduler() method? 我该如何处置它并重新启动InitializeScheduler()方法中的所有内容?

Try to dispose the timer before creating a new one. 在创建新计时器之前,请尝试处置计时器。

private void InitializeScheduler()
{
if( _taskScheduler != null)
    _taskScheduler.Dispose();

     _taskScheduler = new TaskScheduler() { Enabled = true };
    // do something
 }

TaskScheduler class: TaskScheduler类:

private Timer _triggerTimer;
public TaskScheduler()
{            
    _triggerTimer = new Timer(1000);
    _triggerTimer.Elapsed += (TriggerTimerTick);
}

public Dispose()
{
   if(_triggerTimer != null){
       _triggerTimer.Dispose()
       _triggerTimer = null;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM