Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在后台线程上调用Application.DoEvents()会产生什么影响?_C#_Multithreading_.net Cf 3.5 - Fatal编程技术网

C# 在后台线程上调用Application.DoEvents()会产生什么影响?

C# 在后台线程上调用Application.DoEvents()会产生什么影响?,c#,multithreading,.net-cf-3.5,C#,Multithreading,.net Cf 3.5,正如问题所问:Application.DoEvents()在后台线程上调用时做什么 为了提供一些上下文,我正在回顾一个为C#中的.NET CF编写的相当复杂的解决方案(不是我自己编写的)。我之所以回顾它,是因为它有一些内在的问题,我被要求调查 一个相当有趣的消息是,该应用程序在启动时创建一个长时间运行的后台线程,该线程进入一个定时循环。它最终在每次循环迭代时调用Application.DoEvents() 我不太清楚这会有什么影响-它会刷新应用程序主线程上的消息队列吗?或者它在调用它的线程上刷新

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

为了提供一些上下文,我正在回顾一个为C#中的.NET CF编写的相当复杂的解决方案(不是我自己编写的)。我之所以回顾它,是因为它有一些内在的问题,我被要求调查

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

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

几乎可以肯定,这是某些无法解释的应用程序行为的原因。

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

中被接受的答案解决了您的问题。