似乎在 System.Threading.Timer 的回调中调用 Winforms 控件上的 Invoke 会泄漏句柄,直到释放计时器。有谁知道如何解决这个问题?我需要每秒轮询一个值并相应地更新 UI。
我在一个测试项目中进行了尝试,以确保这确实是导致泄漏的原因,如下所示:
System.Threading.Timer timer;
public Form1()
{
InitializeComponent();
timer = new System.Threading.Timer(new System.Threading.TimerCallback(DoStuff), null, 0, 500);
}
void DoStuff(object o)
{
this.Invoke(new Action(() => this.Text = "hello world"));
}
如果您在 Windows 任务管理器中观看,这将泄漏 2 个句柄/秒。