【问题标题】:vshost32.exe has stopped working when I call the ShowDialog method of OpenFileDialog当我调用 OpenFileDialog 的 ShowDialog 方法时 vshost32.exe 已停止工作
【发布时间】:2011-10-29 14:15:10
【问题描述】:

我有一个 c# 应用程序,我正在对其进行最终测试。

但是现在,一直到现在都有效的功能不再有效了!

我有一个按钮,当我点击它时,我想浏览文件,我看到“打开文件”窗口,半秒后,我收到了一个未捕获的 Visual Studio 错误:

vshost32.exe 已停止工作:

很抱歉,错误发生在法语本地化计算机上:

Signature du problème :
  Nom d’événement de problème:  APPCRASH
  Nom de l’application: TOM.vshost.exe
  Version de l’application: 10.0.30319.1
  Horodatage de l’application:  4ba2084b
  Nom du module par défaut: ntdll.dll
  Version du module par défaut: 6.1.7600.16695
  Horodateur du module par défaut:  4cc7ab44
  Code de l’exception:  c0000008
  Décalage de l’exception:  0004631f
  Version du système:   6.1.7600.2.0.0.256.48
  Identificateur de paramètres régionaux:   4108
  Information supplémentaire n° 1:  ffb6
  Information supplémentaire n° 2:  ffb61531feaa1f65f528a2694a510c22
  Information supplémentaire n° 3:  b220
  Information supplémentaire n° 4:  b2205da238309b0a025a25162a3a18f3

我的代码是:

OpenFileDialog ofd = new OpenFileDialog {Filter = Filters};
if (ofd.ShowDialog() != true) {
    return;
}

当我在 ofd.ShowDialog 中时它崩溃了。

这是与代码相关的问题吗?

您对如何调试有任何想法吗?甚至如何调试这个??

当激活“要调试的非托管代码”时,我得到了这个:

"First-chance exception at 0x77cd631f in TOM.exe: 0xC0000008: An invalid handle was specified."

堆栈跟踪(如果有帮助):

>   ntdll.dll!77cd631f()    
    [Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll] 
    ntdll.dll!77d1792d()    
    ntdll.dll!77ce343b()    
    ntdll.dll!77ce2d80()    
    ole32.dll!776b4102()    
    ole32.dll!776b411e()    
    ole32.dll!7767e505()    
    SearchFolder.dll!1046b49d()     
    SearchFolder.dll!1046b267()     
    shell32.dll!76281cb7()  
    shell32.dll!761701b6()  
    shell32.dll!761991fd()  
    shell32.dll!761d61ee()  
    shell32.dll!761d6159()  
    System.ni.dll!524c4ed4()    
    shlwapi.dll!77b6b6cf()  
    ntdll.dll!77cbb428()    
    ntdll.dll!77cbe6f9()    
    kernel32.dll!77c01114()     
    ntdll.dll!77ceb429()    
    ntdll.dll!77ceb3fc()    

我尝试过的一些事情:

一个重要的新点:似乎我在没有Visual Studio的情况下运行它时不会发生错误(这似乎是逻辑)

要点之二:在另一台电脑的visual studio中,似乎有相同的代码(完全相同,并发出相同的windows图像

我尝试删除所有文件并执行 GetLatest,但仍然无法正常工作

【问题讨论】:

  • 我的一位同事不久前也遇到了同样的问题(但使用 WinForms,而不是 WPF,顺便说一句)。还在寻找解决方案...
  • 嗨 - 不要认为这与代码相关(代码相当简单) - 也许是“过滤器”(如果你去掉这些会发生什么?)。您是否尝试过“通常的嫌疑人”(重新启动窗口)?我不懂法国,但我认为 ntdll.dll 是一个相当低级的 dll,根本没有直接链接到 .net - 所以我猜你的 windows 实例应该有问题。
  • 您也可以尝试禁用 VS 托管功能,至少在您下次重新启动之前(右键单击项目 -> 属性 -> 调试 -> 启用 VS 托管进程)。
  • 我已经重启了visual studio,我会在几分钟内测试重启电脑。我已经尝试禁用 VS 托管进程,没有更改任何内容
  • 重启不会改变任何东西 :(

标签: c# wpf visual-studio-2010 vshost.exe


【解决方案1】:

我有同样的问题我的异常代码是 c0020001。我通过重置所有异常解决了这个问题。为此,请转到 {Debug --> Exceptions},您可以在那里重置所有异常。

【讨论】:

    【解决方案2】:

    我的解决方案是添加新的调试方法。而不是 AnyCPU 我使用 x86 调试(在上面的 “开始” 按钮旁边单击 Configuration Manager -> Platform -> New -> x86 )。与此同时,我还在项目属性中启用了 ClickOnce 安全设置,以“这是完全信任的应用程序”,但不知道影响。希望这会对某人有所帮助。

    【讨论】:

      【解决方案3】:

      我在一个 VB 项目中遇到了“VS Express 2013 for Windows Desktop”这个问题。在菜单 DEBUG -> Exceptions... 中检查了一个项目。在该对话框中的“全部重置”(取消选中全部)之后,问题消失了一次,但下一次又出现了。有一个0x4000001f,所以我找到了Program and debugger quit without indication of problem。给定的提示仅对onec有帮助:项目->属性->调试并关闭关闭“启用Visual Studio托管进程”。后来问题又出现了!

      【讨论】:

        【解决方案4】:

        我有一个非常相似的问题让我发疯了好几天。它最终成为预装在我笔记本电脑上的联想密码管理器。它覆盖带有密码框的表单,并带有记住密码的横幅。卸载后我再也没有遇到过这个问题。

        我对遇到此问题的任何人的建议是检查您是否有任何软件可以进行任何覆盖并检查是否是原因。

        【讨论】:

          【解决方案5】:

          【讨论】:

          • 我不记得了,但可能我当时安装了 wuala。所以这是可能的解决方案
          • 谢谢! ...已经三天了,我一直在挠头(并将其撞到墙上),试图知道为什么我的简单 .showdialog() 在 VS 中运行时系统性地崩溃(而不是在简单地执行 .exe 时)。我围绕这个问题尝试了几个答案(在一个带有 STA 的新线程中调用它,从 VB 切换到 C# 以更好地访问“主”函数,删除旧的 dll,......一切都无济于事。然后我看到了你的关于 Wuala 的评论,卸载它......现在它可以工作了:)
          【解决方案6】:

          我遇到了同样的问题,我的解决方案是在“项目属性/调试/启用调试器”部分中“启用本机代码调试”。

          我以为我应该能够调试问题,但错误却消失了。

          【讨论】:

          • 启用本机代码调试解决了我的问题。现在的问题是,为什么。
          • 这在 Visual Studio 中调试时有效。它如何反映在设置和部署项目中。
          【解决方案7】:

          我刚刚重新安装了安装后完成的这台计算机的映像,现在它可以工作了:/。很奇怪

          【讨论】:

            【解决方案8】:

            我记得在使用我们的法语应用程序的德语语言环境的计算机上看到了类似的东西。我不记得我们是如何解决它的,但相似性指向我检查语言环境...... 无效的句柄虽然通常意味着你调用的对象已经被销毁,虽然我真的猜不出是哪个对象,因为ofd此时必须仍然有效。

            【讨论】:

            • 我不这么认为,因为这个项目已经在这台计算机和另一台具有法语语言环境的计算机上运行了超过 10 个月(并且它仍然可以在没有 Visual Studio 的情况下运行)
            • 使用调试模式和非调试 dll 可能会出现问题吗? “未加载符号”和“没有 Visual Studio 也不会崩溃”暗示了这种可能性。
            猜你喜欢
            • 1970-01-01
            • 2011-10-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-01-06
            • 2016-07-09
            • 2012-03-31
            • 1970-01-01
            相关资源
            最近更新 更多