首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试访问在Windows系统服务中创建的QtDBus对象时超时

尝试访问在Windows系统服务中创建的QtDBus对象时超时
EN

Stack Overflow用户
提问于 2015-10-15 23:50:21
回答 1查看 134关注 0票数 0

我想使用QT/MinGW创建一个Windows系统服务,它通过DBUS (从freedesktop.org)与其他应用程序通信。目前,DBUS是作为“服务”运行的,这意味着它是使用instsrv/srvany工具作为服务安装的(但是,DBUS稍后会得到它的bus- service -win )。由于作为服务运行,DBUS作为系统总线运行。

我写了一个简单的应用程序来确保DBUS正常工作(用1个方法在简单对象上创建,用QDBusViewer执行它)。好吧,这很管用。

接下来,我尝试在我的服务的ServiceMain中使用相同的DBUS内容,其中ServiceMain是我们自己创建的类的成员)。我可以在QDBusViewer中看到这个对象,但当我选择它时,QDBusViewer在它阻塞了一段时间后报告了一个超时(无响应)。

我已经在我的测试应用程序中看到了这种行为,并且可以通过在创建DBus对象之后在app.exec()上创建一个QCoreApplication“应用程序”和“块”来修复它。我在服务中尝试了同样的方法,但得到了一个警告,指出QCoreApplication不是在主线程中创建的,问题仍然存在。

我试图在调用StartServiceControlDispatcher()的函数中创建"app“,并在ServiceMain中运行app.exec,但app.exec()立即退出,并显示错误”必须从主线程调用“。

我怎么才能克服这一切呢?在此之前,我非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2015-10-21 15:24:43

将我自己的服务类与"QT解决方案“中的QtService类进行比较,解决了我的问题。

毕竟,我需要将StartServiceControlDispatcher()函数放入QThread中,并以这样一种方式更改我的服务类的方法:只有在SCM上下文中明确运行时才执行exec()。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33153050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档