2

i try to run QObject inhereted class called "Dispatcher" that is using QtWebKit functions in separate thread.
then the main GUI thread , but when i init the object im getting :

First-chance exception at 0x74f2c41f infoo .exe: 0x000006A6: The binding handle is invalid

and the Signal and Slots in the object doesn't work , they do return true but never invoked. i guess it related some how to the error i see . according to the internet i need to start the new thread like this :

CollectorWorker* pCollectorWorker = new CollectorWorker(pUrlStack,m_pSettings);
pCollectorWorker->moveToThread( QApplication::instance()->thread());
QCoreApplication::postEvent(pCollectorWorker, new QEvent( QEvent::User ) );

where CollectorWorker is the separate thread object that init the Dispatcher class. when i init the Dispatcher class im getting this error.

CollectorWorker.cpp

bool CollectorWorker::event( QEvent *ev )
{   
    if( ev->type() == QEvent::User )
    {
      Dispatcher dispatcher; // here im getting the error.
      return true;
    }
return false;
}
4

1 回答 1

1

0x000006A6代表RPC_S_INVALID_BINDING

来自http://blogs.msdn.com/b/greggm/archive/2006/01/04/509243.aspx

解释“绑定句柄无效”

今天,我想尝试更深入地了解一些人使用 VS 2005 调试器报告的“绑定句柄无效”问题。

首先,如果您只关心如何解决问题:启用“终端服务”服务并重新启动。如果您想了解更多,请继续阅读。

终端服务服务

我看到许多用户说“我不想启用终端服务服务,因为它存在安全风险”。虽然我当然理解这种恐惧,但这源于对终端服务服务提供的内容的误解。

启用终端服务服务不会自动启用远程桌面。如果要禁用远程桌面,请取消选中“我的电脑”属性对话框的“远程”选项卡上的远程桌面复选框。默认情况下,远程桌面在 Window XP 上被禁用,因此除非您已经启用它,否则它应该已经在您的计算机上被禁用。

那么,为什么默认启用此服务?终端服务服务默认启用,因为除了远程桌面功能外,它还提供远程协助、快速用户切换、进程列表、DCOM 支持,以及许多其他我不知道的东西,因为我不知道不要在 TS 团队工作。如果您在禁用终端服务服务的情况下运行,那么您正在运行一个奇怪且不推荐的配置。您还有一个损坏的任务管理器,可能还有很多其他直接或间接依赖此服务的东西。

因此,无论您想用 Visual Studio 做什么,都请不要禁用此服务。

于 2012-12-21T15:30:19.530 回答