我的嵌入式应用程序遇到了一些问题。这是一个包含QTimeEdit
的页面,每秒计算一次,一些复选框和一些QLineEdit
每秒刷新一次。
经过几分钟的工作后,我看到界面冻结,即使应用程序仍在运行。如果尝试按下按钮或复选框,则会显示访问冲突消息:
异常'访问冲突'(14):Thread-Id = 05d80002(pth = 8af6109c),Proc-Id = 04a90002(pprc = 91431714)'nmb3.exe',VM-active = 04a90002(pprc = 91431714)' nmb3.exe'PC = 407ea307(qtgui4.dll + 0x0005a307)RA = 40d6c82c(qtgui4.dll + 0x005dc82c)SP = 01c1b928,BVA = 00000004
该例外与qtgui4.dll
有关。我检查了虚拟内存是否饱和,但这不是导致冻结的问题。
如果我避免更新QTimeEdit
,则不会发生冻结,但我不明白为什么。
答案 0 :(得分:0)
您应该将计时器移动到主窗口类中,将传感器处理程序保留在分离的线程中。
传感器处理程序应该:
然后主窗口中的计时器每秒都会:
(确保使用线程安全对象或管理关键部分)