【发布时间】:2017-04-26 10:38:36
【问题描述】:
我需要两个事件循环:一个用于 Windows 服务(或 Linux 守护进程),另一个用于 Qt 事件队列QCoreApplication::exec()(或QApplication::exec() 甚至 QEventLoop::exec())。
我可以在单线程中同时拥有两者吗?或者我应该为其中一个创建一个单独的线程?后一种情况下QObjects与“window”/“service”线程的交互过程应该如何安排?
Windows 服务 需要Message only window 以及窗口过程 来接收和处理来自Windows 的消息,或者服务控制处理函数。我希望能够处理来自 Windows 和 Qt 的两种事件。
我可以使用QEventLoop/QCoreApplication/QApplication::processEvents 来处理来自Windows 的事件之间的Qt 事件吗?它如何影响服务响应能力和QTimer 响应能力?
【问题讨论】:
-
尝试使用
QCoreApplication::installNativeEventFilter -
@ramzes2 感谢您的指导。
-
@ramzes2 这只是关于事件过滤器。但是我需要的事件的起源是什么?如何生成它们?
-
您要处理哪种类型的 Windows 消息?您的应用程序真的是 Windows 服务还是只是无窗口进程?
-
@ramzes2 我的应用程序是 Windows 服务。我想将服务控制消息混合到 Qt 消息队列中。
标签: c++ multithreading qt windows-services event-loop