翻译《The Old New Thing》 - Thread messages are eaten by modal loops

Raymond Chen 2005年4月26日


模态消息循环吃掉了线程消息

简要

文章提出了一个常见但也容易被忽视的问题:

        线程消息(由 PostThreadMessage 创建)在模态循环中会被 DispatchMessage 丢弃,因为它们没有关联的窗口句柄。建议在创建窗口的线程上避免使用线程消息,而应使用 PostMessage 直接向特定窗口发送消息,以确保消息不会丢失。

正文

        使用 PostThreadMessage 函数生成的线程消息在传递给 DispatchMessage 函数时,最终会被忽略掉。这一点,如果你稍作思考,就会觉得显而易见:因为线程消息并没有关联一个窗口句柄。对于 DispatchMessage 来说,面对一个没有关联窗口的消息,它无从下手,最终只能选择丢弃这个消息。

        这种情况对于那些可能会进入模态循环的线程来说,会带来严重的后果。几乎可以肯定的是,任何创建了窗口的线程,最终都会进入模态循环。回想一下,传统的模态循环的代码模式是这样的:

while (GetMessage(&msg, NULL, 0, 0)) {
 TranslateMessage(&msg);
 DispatchMessage(&msg);
}

        在这段代码中,如果 GetMessage 函数返回了一个线程消息,那么这个消息将会无声无息地通过 TranslateMessageDispatchMessage,而不会触发任何操作,最终消失在代码的执行流中。

        因此,对于那些创建了窗口的线程,通常建议避免使用线程消息。当然,如果你打算创建一个窗口,为什么不选择使用 PostMessage 函数呢?只需将目标窗口作为消息的接收者即可。因为现在有了窗口句柄,DispatchMessage 函数就能够将消息正确地传递到你的窗口过程。这样,消息就不会丢失了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/596094.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年好用的几款数据库管理工具

本文主要介绍几款市面上好用的几款支持多种数据库、跨平台的数据库管理工具,包括开源/免费/收费不同的形式。 1. Chat2DB Chat2DB 是一款自2022年9月起开源的AI驱动的数据库管理工具,现如今已经超过了13k的Star。由EasyExcel(31K Star&#…

Linux网络编程---Libevent库

一、简介 Libevent库的特点:开源。精简。跨平台(Windows、Linux、maxos、unix)。专注于网络通信。 二、安装 进入官网下载安装包后拖入虚拟机,压缩包名为 libevent-2.1.11-stable.tar.gz解压:使用命令tar -zxvf libe…

Sy9-dhcp/dns服务配置

前言、 课程需要(进入服务器综合配置使用阶段了),这里还是沿用桌面版的ubuntu来配置dhcp和dns,这里updated了新的版本。2024.5 server端环境: Win11VMS:192.168.105.1192.168.105.128 (ubuntu…

SEED-X:多模态智能助手

SEED-X:多模态智能助手 SEED-X 是一个多模态智能助手,已经将所有的模型和代码开源了!它是一个统一且多用途的多模态基础模型,最新开放了图像编辑模型。 相较于传统的多模态交互框架,SEED-X 具有以下优点:…

OpenHarmony实战开发-如何使用Web组件加载页面

页面加载是Web组件的基本功能。根据页面加载数据来源可以分为三种常用场景,包括加载网络页面、加载本地页面、加载HTML格式的富文本数据。 页面加载过程中,若涉及网络资源获取,需要配置ohos.permission.INTERNET网络访问权限。 加载网络页面…

bugku-mathEnglish

拿到题目得到一串数学题,解出答案得 发现答案全都是1-5的数字,联想到英语中的元音密码解码字典 参照表中字母和前面解出的对应数字,得到flagyuanyinpwd,按格式提交解出题目答案

大模型_基于医疗领域用lora微调ChatDoctor模型

文章目录 ChatDoctor目标方法结果结论收集和准备医患对话数据集创建外部知识数据库具有知识大脑的自主聊天医生的开发模型培训结果数据和模型: 微调推理 ChatDoctor 目标 这项研究的主要目的是通过创建一个在医学建议中具有更高准确性的专业语言模型,来…

创新指南|非凡时代的变革型领导力——五个领导力差异化优势将使高管能够重塑他们的组织

大多数商界领袖现在都明白,我们正在经历一场“伟大的重构”,整个行业、经济和社会都在重塑的时期。然而,考虑到他们面临的短期压力,很少有高管发现自己能够真正应对这些变化,这些变化对他们的组织所需的转型意味着什么…

【Mac】 DSync for mac(文件比较同步工具) v2.7安装教程

软件介绍 DSync是一款文件比较同步工具,通过简便的三步即可完成繁琐的比较、同步操作,您甚至可以通过跳过、删除或反转您选择的文件的复制方向来微调您的同步。这是在Mac上同步文件的最简单方法。 安装教程 1.打开安装包,将「DSync」拖到右…

Merck:mPAGE® Lux SDS-PAGE制胶系统

相对于传统SDS-PAGE制胶工艺,Merck公司的mPAGE Lux制胶系统是一种更快速、简单、安全的替代方法,可实现更具可重现性的结果。mPAGE Lux制胶系统可在90秒内完成小型凝胶固化,而传统方法则需要90分钟以上。该系统采用紫外线照射快速制胶工作流程…

打破 AI 算力天花板,Meta超大规模AI基础设施架构解读

Meta超大规模AI智算基础设施架构设计 摘要 双重 GPU 集群,每群配备 2.4 万个 H100 芯片,分别采用 RoCE 和 InfiniBand 网络连接。LLaMA3 就是在这两个集群上训练出来的;Meta AI 将部署庞大算力集群,拥有 35 万张 H100 GPU&#x…

【字符串】Leetcode 43. 字符串相乘

题目讲解 43. 字符串相乘 算法讲解 class Solution { public:void AddZero(string& temp, int cnt) {while (cnt--) {temp 0;} }string Add(string num1, string num2) {string result;int carry 0;int i num1.size() - 1;int j num2.size() - 1;while (i > 0 ||…

Python学习笔记------处理数据和生成折线图

给定数据: jsonp_1629344292311_69436({"status":0,"msg":"success","data":[{"name":"美国","trend":{"updateDate":["2.22","2.23","2.24",&qu…

select,poll,epoll

在 Linux Socket 服务器短编程时,为了处理大量客户的连接请求,需要使用非阻塞I/O和复用,select,poll 和 epoll 是 Linux API 提供的I/O复用方式。 \selectpollepoll操作方式遍历遍历回调底层实现数组链表哈希表IO效率每次调用都进…

Vue-router使用(配置路径、路由跳转、相关API、多级路由、路由守卫,两种工作模式)

Vue-router使用(配置路径、路由跳转、相关API、多级路由、路由守卫,两种工作模式) 目录 Vue-router使用(配置路径、路由跳转、相关API、多级路由、路由守卫,两种工作模式)安装配置路径路由跳转不携带参数跳转携带参数跳转?形式携带参数地址中直接携带参…

如何设置ddns动态域名服务实现外网访问

在本地搭建好服务器,部署好web网站或其他应用后,需要在外网访问内网时,如何设置动态域名服务ddns,将主机的内网IP端口映射到外网访问,是我们需要面对的一个重要步骤。 内网发布外网,常见的有两种方案&…

KAN:Kolmogorov–Arnold Networks

KAN: Kolmogorov–Arnold Networks 论文链接:https://arxiv.org/abs/2404.19756 代码链接:https://github.com/KindXiaoming/pykan 项目链接:https://kindxiaoming.github.io/pykan/intro.html Abstract 受Kolmogorov-Arnold表示定理的启…

FX95GT FX505GT windows 11 触摸板安装

FX95GT FX505GT windows 11 触摸板驱动安装 如果正常使用 exe 文件安装不上,请在 ‘设置’ 》 ‘系统信息 ’》 驱动下载地址 如果正常使用 exe 文件安装不上,请在 ‘设置’ 》 ‘系统信息 ’》 高级系统设置 设备管理 在电脑上点右键,选择…

光端机(2)——光纤通信学习笔记九

学习笔记里面只关注基本原理和概念,复杂的公式和推导都没有涉及 光端机 光发射机 作用:实现电光转换。将来自电端机的电信号对光源发出的光波进行调制,然后将调制好的光信号耦合到光线中传输。 基本性能要求 1.合适的发光波长(光…

SCI一区 | WOA-BiTCN-BiGRU-Attention多输入单输出回归预测(Matlab)

SCI一区 | WOA-BiTCN-BiGRU-Attention多输入单输出回归预测(Matlab) 目录 SCI一区 | WOA-BiTCN-BiGRU-Attention多输入单输出回归预测(Matlab)效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现WOA-BiTCN-BiGRU-A…
最新文章