gpt4 book ai didi

c# - Application->ProcessMessage 是做什么的?

转载 作者:太空狗 更新时间:2023-10-29 23:35:34 26 4
gpt4 key购买 nike

我正在将 C++ 应用程序转换为 C#,我在代码库的许多地方都遇到过这一行代码:

Application->ProcessMessages()

我找到了这个链接:http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Forms_TApplication_ProcessMessages.html

ProcessMessages() 执行以下操作:

Call ProcessMessages to permit the application to process messages that are currently in the message queue. ProcessMessages cycles the Windows message loop until it is empty, and then returns control to the application.

但是什么是“消息”,什么是“消息队列”呢?如何添加消息?做了什么样的处理?

我似乎找不到任何具体的解释来解释它的作用,这很重要,因为我不知道这个方法调用的 C#/.NET 等价物是什么,或者它是否具有某种形式的功能或者只是融入 .NET 而我不需要做任何事情的方式?

用 C# 标记的问题,因为我最好奇它的 .NET 等价物,但该线程的真正意图只是了解它在 C++ 方面的作用。

最佳答案

.NET 等效项是 Application.DoEvents() .

消息泵是 Win32 messaging system那其实就是Windows本身的通信机制。如果您移动鼠标、单击按钮等,则会发送一条消息。一方(您的应用程序、Windows 本身等)能够处理它,并处理下一条消息。消息泵不断发送队列中的消息。

Application.DoEvents() 将为您的同步代码提供处理这些事件的机会,但最好让您的代码异步,这样 UI 线程就不会被阻塞,并且可以发送消息正常处理,及时处理。

不要使用 Application.DoEvents(),除非您真的知道自己在做什么并且 know it can bring trouble .

关于c# - Application->ProcessMessage 是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34613362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com