OpenFileDialog 窗口未显示
Posted
技术标签:
【中文标题】OpenFileDialog 窗口未显示【英文标题】:OpenFileDialog window not showing 【发布时间】:2015-12-15 12:30:34 【问题描述】:我在使用 Windows 窗体中的 OpenFileDialog 时遇到问题(无论我使用的是控制台应用程序、win 窗体还是 wpf)(C#)。
我有一个带有按钮的小型测试项目,当按下该按钮时,将要求用户选择图像(使用 OpenFileDialog)并将其路径发送到处理方法。 process 方法在 c++ 本机代码中,并使用 c++ cli (CLR) 访问。该方法向Web服务发送请求并等待响应(Web服务是本地的,因此响应速度很快)。
问题是这样的:如果我按下按钮 2 次(选择一个图像 + 处理,完成后我处理另一个图像),第三次窗口不会显示,它卡在 ShowDialog。
如果我从 WPF 运行它,它会给我这个错误:
DisconnectedContext 发生 消息:托管调试助手“DisconnectedContext”在“d:\Project\WpfApplication1.vshost.exe”中检测到问题。
附加信息:此 RuntimeCallableWrapper 转换到 COM 上下文 0x1b09d5d0 失败并出现以下错误:调用的对象已与其客户端断开连接。 (来自 HRESULT 的异常:0x80010108 (RPC_E_DISCONNECTED))。这通常是因为创建此 RuntimeCallableWrapper 的 COM 上下文 0x1b09d5d0 已断开连接,或者它正忙于做其他事情而无法处理上下文转换。不会使用代理来为 COM 组件上的请求提供服务,而是直接调用 COM 组件。这可能会导致损坏或数据丢失。为避免此问题,请确保所有 COM 上下文/单元/线程保持活动状态并且可用于上下文转换,直到应用程序完全使用 RuntimeCallableWrapper 完成,该 RuntimeCallableWrapper 表示存在于其中的 COM 组件。
任何想法如何解决这个问题或这意味着什么?
【问题讨论】:
【参考方案1】:我发现了问题(不是来自 web 服务通信):在我的本机代码中某处我正在取消初始化 COM,但 .NET UI 需要 COM 启动并运行。
所以我要做的就是从我的本机代码中删除 COM 的单化。
【讨论】:
以上是关于OpenFileDialog 窗口未显示的主要内容,如果未能解决你的问题,请参考以下文章
WPF OpenFileDialog 与 Win32 父窗口;窗口关闭时没有重新获得焦点
c# winform 如何实现选择另一台电脑上目录下的文件??
OpenFileDialog 在 Windows 7 中不显示完整的文件名
C# Winforms - 尝试通过将 FileDialogPermission 添加到 AppDomainSetup 来显示 OpenFileDialog