Dar*_*ar1 1 .net c# user-interface timer
我在C#中遇到接口延迟问题.
因为我还在学习,所以请耐心等待我解释.
我已将问题缩小到我的计时器对象.
基本上我的程序通过TCP/IP套接字查询设备并将其输出到屏幕上的文本框.
现在我每秒都在设备中查询数据,这需要将一些逻辑隐藏在计时器对象中,以下是在ticks之间发生的事情:
这可能是在事件处理程序中进行的过多处理吗?每次我在轮询会话期间尝试移动窗口,即当计时器运行时,我的输入延迟非常糟糕.
Pet*_*vis 11
您正在使用的计时器正在Windows消息线程上执行.因此,在轮询运行时,Windows消息队列被阻止.执行太多处理不是问题,大多数情况下线程将等待TCP/IP响应.
要解决这个问题,您只需要在后台线程上完成工作,然后在UI线程上更新UI.
.NET框架中有一堆不同的计时器以不同的方式工作,您正在使用的计时器在同一个线程上处理计时器事件,其他计时器在后台线程上工作.查看这篇文章,了解不同的计时器.
您也可以使用当前计时器调用BackgroundWorker组件来完成后台线程的工作.这样做的主要好处是BackgroundWorker将在后台线程上完成工作,但会在UI线程上引发工作完成事件,这样就可以轻松更新UI而无需担心您所在的线程.
| 归档时间: |
|
| 查看次数: |
2089 次 |
| 最近记录: |