代码之家  ›  专栏  ›  技术社区  ›  Salim

更新计时器线程关闭

  •  0
  • Salim  · 技术社区  · 6 年前

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

    public MyPopup()
    {
       var startTimeSpan = TimeSpan.Zero;
       var periodTimeSpan = TimeSpan.FromMinutes(5);
    
       var timer = new System.Threading.Timer((e) =>
       {
         UpdatePopupUI();
       }, null, startTimeSpan, periodTimeSpan);
    }
    

    一切正常,但当我回到主窗口并打开新窗口(不是弹出窗口的新实例)时,线程似乎会被删除。输入窗口中没有错误。你知道什么会扼杀线程吗?有没有办法解决这个问题?

    1 回复  |  直到 6 年前
        1
  •  1
  •   PepitoSh    6 年前

    很可能你的东西被垃圾收集了。将计时器变量永久存储,可能存储在静态变量中。