[英]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.