我遇到了来自Windows Forms的OpenFileDialog的问题(如果我使用的是控制台应用程序,赢取表单或wpf,则无关紧要)(C#)。
我有一个带有按钮的小测试项目,当按下该按钮时,将要求用户选择图像(使用OpenFileDialog)并将其路径发送到过程方法。过程方法使用c ++本机代码,并使用c ++ cli(CLR)进行访问。此方法向Web服务发送请求并等待响应(Web服务是本地的,因此响应很快)。
问题在于:如果我按下按钮2次(选择图像+处理并在完成后我处理另一个图像),第3次窗口不会显示,它会卡在ShowDialog上。
如果我从WPF运行它会给我这个错误:
发生了DisconnectedContext 消息:托管调试助手' DisconnectedContext'在&d; \ Project \ WpfApplication1.vshost.exe'中检测到问题。
其他信息:为此RuntimeCallableWrapper转换到COM上下文0x1b09d5d0失败,并显示以下错误:调用的对象已断开与其客户端的连接。 (来自HRESULT的异常:0x80010108(RPC_E_DISCONNECTED))。这通常是因为创建此RuntimeCallableWrapper的COM上下文0x1b09d5d0已断开连接或正忙于执行其他操作而无法处理上下文转换。将不使用代理来为COM组件上的请求提供服务,并且将直接对COM组件进行调用。这可能会导致损坏或数据丢失。要避免此问题,请确保所有COM上下文/公寓/线程都保持活动状态并可用于上下文转换,直到应用程序完全使用表示其中的COM组件的RuntimeCallableWrappers完成。
任何想法如何解决这个或它意味着什么?
答案 0 :(得分:0)
我发现了问题(它不是来自webservice通信):在我的本机代码中某处我没有初始化COM,但.NET UI需要COM启动并运行。
所以我所要做的就是从我的本机代码中删除COM的整体化。