Win32 中的 Sleep() 使程序无响应

2023-12-11

基本上就是标题所说的。我想当用户按下特定按钮时每 1 秒更新一次按钮包含的文本。我注意到,当程序没有焦点时,它可以正常工作并且文本刷新正确,但是当我将鼠标悬停在程序上或尝试单击它的菜单时,Windows 通知我该程序没有响应,并询问我是否我希望它终止。当循环结束时,程序返回到正常状态。还有我可能做过的任何操作(比如移动它或关闭它)Sleep()-ing 在循环之后执行。这是一些代码:

case ID_BUTTON_START:
// Code executed when pressing Start Button.
char startButtonText[30];  // Storing next loop text
 for (int i=5; i>0; i--)
    {
       sprintf(startButtonText, "Starting in ... %d", i);
       SendMessage(hwndButtonStart, WM_SETTEXT, 0, (LPARAM)(startButtonText));
       Sleep(1000);
     }

这是正常的吗?如果不是的话是什么原因造成的?


The WndProc不在应用程序内异步处理消息,这意味着所有消息都应快速处理并立即传递返回值。你不能Sleep在 UI 线程中,因为它会阻止其他 UI 事件的处理。任何可能需要很长时间的繁重工作或同步请求/作业都应该在工作线程中执行。至少有三个可行的选择:

  1. 创建一个新的 (工作线程) 来完成任务。
  2. 如果该任务可能经常完成,请使用线程池反而。
  3. 设置并订阅定时器事件.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Win32 中的 Sleep() 使程序无响应 的相关文章

  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • 如何将我构建的模型拟合到另一个数据集并获得残差?

    我对数据 A 拟合了一个混合模型 如下所示 model lt lme Y 1 X1 X2 X3 random 1 Class method ML data A 接下来 我想看看模型如何拟合数据 B 并获得估计的残差 R 中有可以用来执行此操
  • 如何在java中将Wav文件分割成多个通道?

    我想编写一个Java程序来将wav文件分割成多个通道 输入将是一个 wav 文件 输出将是与通道数量一样多的 wav 文件 我可以用 Java 读取 wav 文件 但是如何将其拆分为多个通道 Wave 标头包含每个样本的样本大小 以位为单位
  • IIS 5 上的 ASP.NET 2.0 应用程序导致错误(aspnet_wp.exe (PID: XXXX) 意外停止。)

    在 Windows 2000 服务器 IIS 5 上托管 ASP NET 2 0 Web 应用程序后 我无法浏览该网站 浏览器上显示以下错误消息 并添加了三个事件日志条目 浏览器上的错误消息 服务器应用程序不可用 您尝试访问此 Web 服务
  • 如何高效创建数据透视表?

    我确实有一个像这样的数据框 import pandas as pd df pd DataFrame c0 list ABC c1 join list ab join list def join list s c2 list DEF c0 c
  • 使用 Img.at 获取无符号短值

    我目前正在为我的一个班级研究高动态范围算法 我在使用 OpenCV 时遇到问题 我有一个 16 位原始图像 我正在尝试使用显示该图像中的值 image at
  • Python 日期转换。如何将阿拉伯日期字符串转换为日期或日期时间对象python

    我必须将此日期转换为正常的日期字符串 对象 至 1994 年 4 月 11 日 我已经解决了这个问题 可能不是最好的 但它有效 coding utf8 import unicodedata s u def date conv unicode
  • HIVE 枢轴和总和

    我有一个表格 我试图弄清楚如何根据第二列中的值进行透视和求和 输入示例 own pet qty bob dog 2 bob dog 3 bob dog 1 bob cat 1 jon dog 1 jon cat 1 jon cat 1 jo
  • JPA 和 Bean 验证的唯一约束

    我想要一个 UniqueBean Validation 的约束 但这不是标准提供的 如果我使用 JPA UniqueConstraint我不会有独特的验证和错误报告机制 有没有办法定义 Unique作为 Bean Validation 约束
  • 如何使用AJAX上传大型CSV文件? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我们有一些包含大量记录的 CSV 文件 需要使用 Web 界面将此文件上传到 MySQL 数据库 这些文件是从不同的现场工作中收集的 并通过网络应用程序上传到服务器 Web 应用
  • Android原生webrtc:已连接后添加视频

    我已经使用 Google 代码库中的 libjingle so 和 PeerConnectionClient java 等在我的 Android 应用程序中成功运行 WebRTC 一段时间了 但是 我现在遇到一个问题 用户仅以音频方式启动连
  • 在 Python 2.7 中,如何覆盖单个函数的字符串表示形式?

    如何覆盖 Python 中单个函数的字符串表示形式 我尝试过的 gt gt gt def f pass gt gt gt f
  • 异步 ReadDirectoryChangesW 调用会阻止线程退出

    介绍 我正在编写一个小应用程序 用于监视某个目录中是否有新添加的文件 我想将监控代码放在一个单独的线程中 这样我就可以让主线程自由用于其他事情 并在需要时取消监控线程 相关信息 我在用读取目录更改W进行监控 我正在使用原始 WIN32 AP
  • pandas DataFrame 的反向地理编码

    我们有经度和纬度数据 需要将它们转换为纽约市的邮政编码 有什么方法可以处理 20 000 行的 python 包吗 uszipcode 包可以满足您的需求 from uszipcode import SearchEngine search
  • 动态显示资源/可绘制图像

    我正在尝试将不同的图像 jpg png 动态地放入ListView from res drawable 我从数据库中获取的图像的名称 图像本身位于res drawable folder 这是我已经拥有的 错误为 D 字符串图像名称 gt 数
  • Java 和 C# 中的 getBytes() 等效项

    我想将 Java 中的类转换为 C 大部分更改已经完成 但我对此部分不太确定 我想转换这行代码 byte arrayOfByte1 paramString getBytes 我已经尝试过这个 byte arrayOfByte1 BitCon
  • Angular ui-router 嵌套视图不会刷新 Angular 服务检索到的数据

    我有一个不平凡的 Angular SPA 它使用 ui router 来管理多个视图 其中许多视图同时可见 我需要模型在控制器之间可见 因此我编写了服务 允许控制器拉取已更新的模型数据的新副本 我提前为问题的长度表示歉意 但我会先说明问题
  • 在 Google Maps API v3 中仅打开一个 InfoWindow

    我只需在 Google 地图上打开一个 InfoWindow 在打开新的 InfoWindows 之前 我需要关闭所有其他 InfoWindows 有人可以告诉我该怎么做吗 您只需创建一个InfoWindow对象 保留对其的引用 并为所有标
  • 使用 MVC 和实体框架实施审核日志/更改历史记录

    我正在使用实体框架在我的 MVC 应用程序中构建更改历史记录 审核日志 所以具体在编辑方法中public ActionResult Edit ViewModel vm 我们找到我们正在尝试更新的对象 然后使用TryUpdateModel o
  • 如何让 Homebrew 恢复到之前的状态?

    我删除了一些 rb 文件 cassandra rb 电子邮件受保护 and 电子邮件受保护 从文件夹 usr local Homebrew Library Taps homebrew homebrew core Formula 来自 mac
  • Win32 中的 Sleep() 使程序无响应

    基本上就是标题所说的 我想当用户按下特定按钮时每 1 秒更新一次按钮包含的文本 我注意到 当程序没有焦点时 它可以正常工作并且文本刷新正确 但是当我将鼠标悬停在程序上或尝试单击它的菜单时 Windows 通知我该程序没有响应 并询问我是否我