|
1
1
现在还不清楚这里发生了什么。在UI线程上为工作线程上的一个updateProgress调用获取多个updateProgress调用绝对是错误的。您发布的代码不应该这样做。 但是,是的,post()调用不是特别快。假设用户界面线程上的消息循环不忙于做其他事情,那么接收通知大约需要一毫秒的时间。这不是CPU工作的一毫秒,而是由处理getMessage()的Windows管道引起的延迟。线程上下文切换是它的一部分,但只是一小部分。 这会产生明显的不良副作用。过于频繁地调用post(),或者让已发布的委托进行过多的艰苦工作,都会严重影响UI线程。到了不再逃避常规职责的地步。由于延迟,你可以很快到达那里;每秒只需要1000个帖子。 当然,没有必要经常发布这样的信息,人眼无法以超过每秒25次的速度感知更新。更频繁地做只是浪费精力。但是要获得这种理想的更新率并不是特别容易实现的,除非工作线程特别注意经过的时间。 总之,最好将它留给客户机代码来告诉您它希望如何对其通知进行封送。FileSystemWatcher.SynchroningObject就是一个很好的例子。如果post()崩溃,这是客户端代码修复问题的一种方法。还可以看一看BackgroundWorker类。 |
|
|
2
0
您的示例中是否缺少一些代码?你打电话给
在任何情况下,如果您使用一个分析器,或者如果您没有分析器,它可能会很有帮助。
可能是线程上下文切换会让您丧命,因为您必须这样做
|
|
|
Jess The Witch · GCP云功能中处理延迟任务的模式 1 年前 |
|
Plup · 连接失败时,PyMongo异步客户端未引发异常 1 年前 |
|
|
user1233894 · 尝试从全局函数传递值 1 年前 |
|
|
Fabiano Taioli · 管理单线程Rust中的阻塞函数 1 年前 |
|
|
river7816 · 为什么spdlog不在async函数中打印 1 年前 |