Socket notifiers cannot be enabled or disabled from another thread
时间: 2024-02-12 16:40:03 浏览: 198
Qt编写调试日志输出工具带网络转发(开源)
5星 · 资源好评率100%
"Socket notifiers cannot be enabled or disabled from another thread"这个错误是因为在一个线程中尝试在另一个线程中启用或禁用Socket notifiers(套接字通知器)时引发的。引用中提到,当在UI线程中调用udpsocket->abort()时会出现这个问题。实际上,Qt的Socket notifiers是与特定线程相关联的,不能跨线程使用。
解决这个问题的方法是将Socket notifiers的操作限定在同一个线程中进行。可以考虑在同一个线程中创建并操作Socket notifiers,或者使用信号槽机制在不同线程之间进行通信。
例如,在引用中的代码中,可以将udpSocketReceiver和myUdpSocket都放在MyThread线程中创建,并确保在MyThread线程中调用udpsocket->abort()。这样就可以避免在不同线程中操作Socket notifiers导致的错误。
总结起来,要解决“Socket notifiers cannot be enabled or disabled from another thread”错误,需要将Socket notifiers的操作限定在同一个线程中进行,并避免在不同线程中调用相关方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [QSocketNotifier: Socket notifiers cannot be enabled or disabled from another thread](https://blog.csdn.net/weixin_43820764/article/details/105887658)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文