【发布时间】:2014-10-23 12:55:08
【问题描述】:
正如问题所问:Application.DoEvents() 在后台线程上调用时会做什么?
为了提供一些背景信息,我正在审查一个用 C# 为 .NET CF 编写的相当复杂的解决方案(不是由我编写的)。我审查它的原因是它有一些我被要求调查的固有问题。
一个相当有趣的花絮是应用程序在启动时会创建一个长时间运行的后台线程,该线程会进入一个定时循环。它最终在每次循环迭代时调用 Application.DoEvents()。
我不太清楚这会产生什么影响——它会刷新应用程序主线程上的消息队列吗?或者它是否在调用它的线程上刷新消息队列(即使后台线程没有要刷新的队列)。
这几乎肯定是导致某些其他无法解释的应用程序行为的原因。
【问题讨论】:
-
this SO post 中接受的答案解决了您的问题。
标签: c# multithreading .net-cf-3.5