QCoreApplication事件循环和Windows服务控制处理程序功能

时间:2017-04-26 10:38:37

标签: c++ multithreading qt windows-services event-loop

我需要两个事件循环:一个用于 Windows服务(或 Linux守护程序),另一个用于 Qt 事件队列datename() (或QCoreApplication::exec()甚至QApplication::exec())。

我可以在单线程中同时使用两者吗?或者我应该为其中一个创建一个单独的线程?在后一种情况下,如何在QEventLoop::exec()和" window" /" service"之间安排交互过程。线程?

Windows服务需要Message only window以及窗口过程来接收和处理来自 Windows 服务控制处理程序功能。我希望能够处理来自 Windows Qt 特定事件的两种事件。

我可以使用QObject来处理来自 Windows 的事件之间的 Qt 事件吗?它如何影响服务响应能力和QEventLoop/QCoreApplication/QApplication::processEvents响应能力?

2 个答案:

答案 0 :(得分:1)

Qt事件循环在所有平台上集成本机通知/事件。 nativeEventFilter是您在希望时对原生事件做出反应的方式。

答案 1 :(得分:1)

尝试使用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