冰冰九公主 2024-01-03 19:44 采纳率: 0%
浏览 7

winfrom程序不能响应鼠标和键盘问题?哪位给看下,一块讨论讨论

我写了一个winform程序,线程处理串口收到的数据,invoke更新UI,还有一些网络摄像头预览等操作,目前偶尔会出现,点击按钮showdialog
打开子窗口后,鼠标和键盘无法操作父子两个串口,感觉焦点不在父子窗口,鼠标无论点击哪个界面的按钮,都发出噔噔的声音(就是前面有弹窗,点击弹窗后面窗口的系统提示音),而此时父窗口的线程,时钟,预览画面都很流畅,而且线程数据更新后ui也很及时更改数据显示,请问一般这会是什么问题,这个问题是偶尔出现,每次出现都是打开子窗口后,只能强制结束任务。请指点怎么排查或者看看是什么问题?

  • 写回答

1条回答 默认 最新

  • 虫鸣@蝶舞 2024-01-03 22:15
    关注

    首先,建议你把子窗体的功能尽量做到父窗体中,或者把父窗体的功能拆分成多个子窗体,至于原理就是window的1/10s消息循环机制,当一个窗体的消息循环太复杂,导致处理一条消息的时间超过100ms时,就会导致window窗体的消息事件堆积堵塞在消息循环里。而从你的描述看,你的主窗体太复杂,还有一个工作线程在处理串口数据,导致你的子窗口在window系统运行其他进程繁忙时,失去响应。当然了,因为看不到你的代码,所以你的程序也可能有bug,比如线程共享时锁死的问题,这个可以通过windbg调试下看看,因为你有源码符号表,应该可以很快定位到bug处。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月3日

悬赏问题

  • ¥15 为什么apriori的运行时间会比fp growth的运行时间短呢
  • ¥15 帮我解决一下膳食平衡的线性规划模型的数据实例
  • ¥40 万年历缺少农历,需要和阳历同时显示
  • ¥250 雷电模拟器内存穿透、寻基址和特征码的教学
  • ¥200 比特币ord程序wallet_constructor.rs文件支持一次性铸造1000个代币,并将它们分配到40个UTXO上(每个UTXO上分配25个代币),并设置找零地址
  • ¥15 关于Java的学习问题
  • ¥15 如何使用chatgpt完成文本分类任务?
  • ¥15 已知速度v关于位置s的等式,怎么转化为已知位置求速度v的等式
  • ¥15 我有个餐饮系统,用wampserver把环境配置好了,但是后端的网页却进去,是为什么,能不能帮远程一下?
  • ¥15 R运行没有名称为"species"的插槽对于此对象类"SDMmodelCV"