我正在使用计时器来重置用作警告框的标签。基本上,如果用户做了某件事(更具体地说,出了问题,例如:他使用了程序无法识别的单词),这会尽早捕获出现的问题并将发生的情况返回给他,以便他可以更改输入。
重置会在 5 秒后清空标签,以防止他看到类似“请不要使用中文字符”的内容,并且可能仍然认为旧错误仍然存在。这就是我阅读调用时得到的内容(因为我听说 begininvoke 需要 endinvoke,所以我选择了 invoke)。
private void lblWrn_TextChange(object sender, EventArgs e)
{
Timee = new System.Timers.Timer(5000);
Timee.Elapsed += new ElapsedEventHandler(timerClearWrn);
Timee.Enabled = true;
}
string empty = "";
private void timerClearWrn(object sender, ElapsedEventArgs elapsed)
{
lblWrn.Invoke(new Action<Label>(lblWrn), new object[] { lblWrn, "" });
}
我不太确定我哪里出了问题,并且查找示例,无法弄清楚要更改哪一部分。有人可以向我解释这个错误或调用更多吗?
最佳答案
如果是Windows Forms应用程序,使用System.Windows.Forms.Timer,则不需要Invoke,因为计时器回调在主线程上执行。
此外,不要在每次文本更改时创建新的计时器。
关于c# - 多线程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6610429/