我有一个C#Windows窗体应用程序,它有一些摄像头控制和计算机视觉。对于计算时间较长的所有部件,我使用了单独的线程。但是仍然有一些部分存在于GUI的回调函数中。据我所知,所有这些回调函数都在同一个线程中执行。有没有办法看到这个线程工作或闲置多少时间?需要多少百分比的空闲时间才能使GUI仍然响应?
答案 0 :(得分:2)
recommended您不应该阻止UI线程超过50毫秒,否则会影响UI响应。即,两个用Form.BeginInvoke
排队的UI回调,每个回调大约需要50毫秒才能完成,可能会给用户带来一些不愉快的UI体验。
更新UI的频率比用户对它的反应(即每秒约24帧)更有意义。因此,您应该限制UI线程回调并为用户输入事件提供优先级。
我最近发布了一个如何做到的例子:
答案 1 :(得分:0)
对于简单的任务,您可以使用秒表并手动测量时间。但是我认为您需要检查performance profiler是什么。
此外 - 您的GUI需要大量处理的情况很少。在大多数情况下,问题来自于在事件处理程序中放置太多计算而不是在外部某处实现它们,然后在完成时更新表单。它不是单个/多线程问题,而是更多地正确使用可用事件。