繁体   English   中英

c# 聊天 window 应用程序问题与定时器

[英]c# chat window application problem with timer

我正在开发一个聊天应用程序。 为了获得频繁的请求、消息和区域请求,我使用一个计时器并调用 timer.now 上的所有方法。 问题是,当我单击应用程序中的任何控件时,由于计时器正在运行,这会给我一个迟到的响应。 它首先挂起,直到完成计时器代码,然后控制点击事件被触发。

因此,感谢有关如何处理此问题的任何帮助,我也尝试了线程,但这没有帮助。

如果你有,请给我任何想法。

谢谢。

Use System.Timers.Timer or System.Threading.Timer instead of the Windows.Windows.Forms.Timer , and inside the Elapced event handler whenever you call methods or properties on UI controls use control.InvokeRequired and control.Invoke .

表单计时器的问题在于它在 UI 线程上执行操作,来自msdn

Windows 定时器专为单线程环境而设计,其中 UI 线程用于执行处理

编辑:这是使用System.Timers.Timer的示例:

private System.Timers.Timer _chatTimer = new System.Timers.Timer();

public Form1()
{
    InitializeComponents();

    _chatTimer.Interval = 1000;//1 seconds
    _chatTimer.Elapsed += OnChatTimerElapsed;
    _chatTimer.AutoReset = true;
}

private void OnChatTimerElapsed(object sender, System.Timer.ElapsedEventArts e)
{
    //code to perform when timer elapsed.
}

Edit2:另一件需要注意的事情是,根据经过的事件处理程序的执行时间,如果执行代码所需的时间大于 1 秒,那么我建议您将_chatTimer.AutoReset设置为 false 并且仅在上一个经过的事件已经结束。 例如检查这个

暂无
暂无

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

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