QCoreApplication 事件循环和 Windows 服务控制处理函数

QCoreApplication event loop and Windows Service Control Handler Function

我需要两个事件循环:一个用于 Windows service(或 Linux daemon),另一个对于 Qt 事件队列 QCoreApplication::exec()(或 QApplication::exec() 甚至 QEventLoop::exec())。

我可以在单线程中同时拥有两者吗?或者我应该为其中之一创建一个单独的线程?后一种情况应该如何安排QObjects和"window"/"service"线程之间的交互过程?

Windows 服务 需要 Message only window 以及 window 过程 来接收和处理来自 Windows 服务控制处理函数 的消息。我希望能够处理来自 WindowsQt 特定事件的两种事件。

我可以使用 QEventLoop/QCoreApplication/QApplication::processEvents 来处理来自 WindowsQt 事件吗?它如何影响服务响应能力和 QTimer 响应能力?

Qt 事件循环在所有平台上集成原生 notifications/events。 nativeEventFilter 是您根据需要对本机事件做出反应的方式。

尝试使用QtService 库。 QtService 对于开发 Windows 服务和 Unix 守护进程很有用: https://github.com/qtproject/qt-solutions/tree/master/qtservice

或者,您可以像在 QtService 库中那样自己实现它: https://github.com/qtproject/qt-solutions/blob/master/qtservice/src/qtservice_win.cpp#L556