完成任务后是否需要处置System.Threading.Timer?

时间:2019-01-24 15:11:06

标签: c# multithreading timer

我正在使用此代码在一个单独的线程上执行我的代码一次,延迟了10秒。

System.Threading.Timer timer = null;
timer = new System.Threading.Timer(e=> {
    //My code
    timer.Dispose();
    },null,10000,System.Threading.Timeout.Infinite);  

我想问的是,完成任务后是否需要使用timer.Dispose(),否则计时器将自动释放。

1 个答案:

答案 0 :(得分:1)

是的,您应该始终放置计时器。

来自docs

  

当不再需要计时器时,请使用Dispose方法释放   计时器持有的资源。请注意,回调可能会在   因为计时器排队,所以已调用Dispose()方法重载   由线程池线程执行的回调。您可以使用   Dispose(WaitHandle)方法重载以等待所有回调都具有   完成。