繁体   English   中英

System.Timer 奇怪的行为

[英]System.Timer weird behavior

抱歉混淆标题,但老实说我不知道​​该放什么。 所以我创建了一个计时器,它会在每个 T 间隔触发一个事件。 这个简单的事件只会附加文本并以 MMORPG 风格显示它。 它确实有效,但有一点很奇怪,它有时不会触发事件(我解释得对吗?)。

这是图片,所以你可以理解我的意思:

在此处输入图片说明

这是我的代码:

baloon = new System.Timers.Timer(30);
baloon.Elapsed += OnTweakTimedEvent_baloon;
//baloon.Elapsed += new ElapsedEventHandler(OnTweakTimedEvent_baloon);

private void OnTweakTimedEvent_baloon(object sender, ElapsedEventArgs e)
{
    lbBaloon.Text += message[letterCount]; 
    letterCount++;
    if (letterCount > message.Length - 1) //stops timer when finishes
    {
        letterCount = 0;
        baloon.Enabled = false;
        lbBaloon.Text = message; // displays the full message when it ends
    }
 }

一个相当明显的问题是,您正在为 UI 使用System.Timers.Timer ,而没有任何同步。 如果没有SynchronizationContext,此计时器将在后台线程上引发事件,这可能会导致各种问题,因为 UI 类只能由 UI 线程安全访问。

我建议使用 SynchronizationContext 或切换到 winforms 计时器。 有关更多详细信息,请参阅计时器比较

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM