【问题标题】:Update timer thread get closed更新计时器线程关闭
【发布时间】:2018-05-30 06:11:04
【问题描述】:

我每 5 分钟更新一次弹出窗口的标签,并将代码基于此 article

public MyPopup()
{
   var startTimeSpan = TimeSpan.Zero;
   var periodTimeSpan = TimeSpan.FromMinutes(5);

   var timer = new System.Threading.Timer((e) =>
   {
     UpdatePopupUI();
   }, null, startTimeSpan, periodTimeSpan);
}

一切正常,但是当我回到主窗口并打开新窗口(不是弹出窗口的新实例)时,似乎线程被删除了。我在输入窗口中没有错误。关于什么可以杀死线程的任何想法?有没有办法解决这个问题?

【问题讨论】:

  • 定时器超出范围,使其成为类属性
  • 感谢快速高效的输入!

标签: c# multithreading timer


【解决方案1】:

您的对象很可能会被垃圾回收。永久存储您的计时器变量,可能在静态变量中。

【讨论】:

  • 或者你可以明确地使用GC.KeepAlive(timer)——但这可能不适合这个特定的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多