1
11
您使用的计时器正在Windows消息线程上执行。因此,当轮询运行时,将阻止Windows消息队列。这不是做太多处理的问题,大多数时候线程将等待TCP/IP响应。 要解决这个问题,您只需要在后台线程上完成工作,然后在UI线程上更新UI。 .NET框架中有一堆不同的计时器,它们以不同的方式工作,您使用的计时器处理同一线程上的计时器事件,其他计时器处理后台线程。 Check this article out about the different timers . 您还可以使用当前计时器调用BackgroundWorker组件在后台线程上进行工作。这样做的主要好处是后台工作人员将在后台线程上完成工作,但将在UI线程上引发“完成工作”事件,这样就可以轻松地更新UI,而无需担心您所处的线程。 |
2
2
我认为这是因为您试图在UI线程中进行工作。在后台工作线程中运行计时器。 |
3
1
好像发生了一些事情。首先,您可能在计时器计时处理程序中做了太多的工作。如何构造字符串并对命令进行编码?其中任何一个都可以在勾选处理程序之外完成,或者以任何方式简化(例如,使用string.format调用)?实际上.NET中有三种不同的计时器,它们的分辨率不同。你用的是哪个计时器? 最大的问题是你的间歇时间是1秒。不管怎样,这都是很大的处理开销。请记住,在大多数情况下,每次命中间隔并调用勾号处理程序时,都会导致线程之间的上下文切换。这其中涉及到一些开销(您不能做任何事情),而且上下文切换的频率越高,性能出现的速度就越慢。 |
Emopusta · 从后端到前端的图像路径不工作 2 年前 |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
Niyazi Babayev · 如何在表达式中动态应用表达式? 2 年前 |
Dansih · .Net核心自定义身份验证方案 2 年前 |
lolorekkk · 面板插入。NET WinForm 2 年前 |