c# - 更新计时器线程关闭
问题描述
我每 5 分钟更新一次弹出窗口的标签,并基于本文的代码。
public MyPopup()
{
var startTimeSpan = TimeSpan.Zero;
var periodTimeSpan = TimeSpan.FromMinutes(5);
var timer = new System.Threading.Timer((e) =>
{
UpdatePopupUI();
}, null, startTimeSpan, periodTimeSpan);
}
一切正常,但是当我回到主窗口并打开新窗口(不是弹出窗口的新实例)时,似乎线程被删除了。我在输入窗口中没有错误。关于什么可以杀死线程的任何想法?有没有办法解决这个问题?
解决方案
很可能您的对象会被垃圾收集。永久存储您的计时器变量,也许在静态变量中。
推荐阅读
- java - 如何在 ExtentReports 中添加跳过的测试用例?
- xslt - 无法解析 javax.xml.transform.dom
- scala - 如何从 Scala 中的原始数据帧中提取子集 Spark 数据帧?
- vba - 错误“1004”无法打开文件,因为其格式或扩展名无效
- swift - 毫秒到完整日期在我的时区返回错误的日期
- php - 每个页面的 Html 主题
- c++ - 使用 system() 创建独立的子进程
- python-3.x - 在python中对相似但准确的单词及其缩写进行分组
- javascript - 为什么 typeof NULL 返回未定义?
- sql-server - Entity Framework Core 性能不一致