QCoreApplication 事件循环和 Windows 服务控制处理函数
QCoreApplication event loop and Windows Service Control Handler Function
我需要两个事件循环:一个用于 Windows service(或 Linux daemon),另一个对于 Qt 事件队列 QCoreApplication::exec()
(或 QApplication::exec()
甚至 QEventLoop::exec()
)。
我可以在单线程中同时拥有两者吗?或者我应该为其中之一创建一个单独的线程?后一种情况应该如何安排QObject
s和"window"/"service"线程之间的交互过程?
Windows 服务 需要 Message only window 以及 window 过程 来接收和处理来自 Windows 或 服务控制处理函数 的消息。我希望能够处理来自 Windows 和 Qt 特定事件的两种事件。
我可以使用 QEventLoop/QCoreApplication/QApplication::processEvents
来处理来自 Windows 的 Qt 事件吗?它如何影响服务响应能力和 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
我需要两个事件循环:一个用于 Windows service(或 Linux daemon),另一个对于 Qt 事件队列 QCoreApplication::exec()
(或 QApplication::exec()
甚至 QEventLoop::exec()
)。
我可以在单线程中同时拥有两者吗?或者我应该为其中之一创建一个单独的线程?后一种情况应该如何安排QObject
s和"window"/"service"线程之间的交互过程?
Windows 服务 需要 Message only window 以及 window 过程 来接收和处理来自 Windows 或 服务控制处理函数 的消息。我希望能够处理来自 Windows 和 Qt 特定事件的两种事件。
我可以使用 QEventLoop/QCoreApplication/QApplication::processEvents
来处理来自 Windows 的 Qt 事件吗?它如何影响服务响应能力和 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