在用Microsoft Visual Studio软件进行语言编译时,时常会遇到在按下运行按钮后出现系统报错,内容是:“试图运行项目时出错:无法启动调试。绑定句柄无效”。即使是重新安装Microsoft Visual Studio也无济于事。其实造成这种情况的原意有很多;笔者突然想起前几天曾去过Microsoft Update,期间提示需要安装一个ActiveX插件,笔者想到如果在窗体上使用 ActiveX 控件,则在调试器下运行时可能会收到线程间 InvalidOperationExceptio
n。发生这种情况时,ActiveX 控件不支持多线程处理。有关使用 Windows 窗体的 ActiveX 控件的更多信息,请参见 Windows 窗体和非托管应用程序。 如果使用的是 Visual Studio,则可以通过禁用 Visual Studio 宿主进程来防止此异常发生。原因可能就是我用了ActiveX控件造成的。
解决此问题方法有以下几种;
1、在“项目”-“属性”里,“调试”选项卡,“启用非托管代码调试(U)”项打勾。在将VS2003的
项目升级到05时,也可能会出现绑定句柄无效的提示,用这个方法就能解决。
分析:这个方法应该是跟安全代码有关的,.net尤其是ASP.NET对unsafe的限制比较严格,VS2005
看来是默认全部用非托管了。
2、在应用的属性中的DEBUG选项中去掉 Enable the Visual Studio hosting process前的勾。
分析:还记得VS2005的DEBUG文件夹比VS2003多出了一共扩展名有vshost的应用程序,这个应该是
跟某种远程服务有关的吧。 Machine Debug Manager服务说明:支持对 Visual Studio 和脚本调
试器进行本地和远程调试。如果该服务停止,调试器将不能正常工作。
3、还有可能是升级的错误。就是.net2003升级到.net2005时出问题了。这种情况建议重新做系统后
安装 .net2005
4、 “Machine Debug Manager”服务没有启动。在开始-控制面板-管理工具-服务将服务“Machine
Debug Manager”的状态设为“自动”,并启动该服务。就可以调试了。
5、还有就是Terminal Service服务没有启动。在开始-控制面板-管理工具-服务将服务“Terminal
Service”的状态设为“自动”,并启动该服务。就可以调试了。
分析:允许用户以交互方式连接到远程计算机。远程桌面、快速用户切换、远程协助和终端服务
器依赖此服务 - 停止或禁用此服务会使您的计算机变得不可靠。要阻止远程使用此计算机,请在
“系统”属性控制面板项目上清除“远程”选项卡上的复选框即可。
备注:此方法笔者仅仅在。Net2005环境下的c#编程中适用过。另外稍带一个经验供大家分享那就
是Terminal Service服务下边有个Themes服务;如果发现安装的系统风格无法应用时大多数情况
下就可能是此服务关闭造成的。