【问题标题】:What is the effect of calling Application.DoEvents() on a background thread?在后台线程上调用 Application.DoEvents() 有什么影响?
【发布时间】:2014-10-23 12:55:08
【问题描述】:

正如问题所问:Application.DoEvents() 在后台线程上调用时会做什么?

为了提供一些背景信息,我正在审查一个用 C# 为 .NET CF 编写的相当复杂的解决方案(不是由我编写的)。我审查它的原因是它有一些我被要求调查的固有问题。

一个相当有趣的花絮是应用程序在启动时会创建一个长时间运行的后台线程,该线程会进入一个定时循环。它最终在每次循环迭代时调用 Application.DoEvents()。

我不太清楚这会产生什么影响——它会刷新应用程序主线程上的消息队列吗?或者它是否在调用它的线程上刷新消息队列(即使后台线程没有要刷新的队列)。

这几乎肯定是导致某些其他无法解释的应用程序行为的原因。

【问题讨论】:

标签: c# multithreading .net-cf-3.5


【解决方案1】:

Application.DoEvents() 处理当前在消息队列中的所有 Windows 消息,每个线程创建一个窗口。因此,如果您在“后台线程”上调用它,除非您在该线程上创建一个窗口,否则它什么也不会做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-17
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 2019-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多