在VB.Net(VS 2012)中打开'OpenFileDialog'时发生异常“System.AccessViolationException”

时间:2013-03-19 06:15:02

标签: vb.net access-violation openfiledialog

我非常感谢你的帮助。我的申请如下,

操作系统:Windows 7 64位操作系统
Visual Studio:VS 2012
应用程序:在.Net framework 4上运行的VB.Net

在我的应用程序中,我有一个按钮,它调用我的自定义方法'Select_Batch_File()'。单击此按钮后,它会打开“OpenFileDialog”以选择特定文件。但是,在我的机器上使用上述配置可以正常工作在我的一些同事机器上(具有相同的配置)这不起作用并且没有任何异常地失败。我从我同事的机器上收集了线程转储,如下所示,

======================

日志名称:应用程序

来源:.NET Runtime

日期:2013年3月18日下午1:54:19

事件ID:1026

任务类别:无

等级:错误

关键字:经典

用户:N / A

说明

应用程序:Visual AEEMS.exe

框架版本:v4.0.30319

描述:由于未处理的异常,该进程已终止。

异常信息:System.AccessViolationException

堆栈:

在System.Windows.Forms.FileDialogNative + IFileDialog.Show(IntPtr)

在System.Windows.Forms.FileDialog.RunDialogVista(IntPtr)

在System.Windows.Forms.FileDialog.RunDialog(IntPtr)

在System.Windows.Forms.CommonDialog.ShowDialog(System.Windows.Forms.IWin32Window)

===============

我遵循MSDN论坛的解决方案,其中要求用户取消选中visual studio中的选项>工具>选项>调试> '抑制模块加载时的JIT优化(仅限管理)'但没有运气。

这是我的代码

 Sub Select_Batch_File()
        Try

            Dim OpenFileDialog As New OpenFileDialog
            OpenFileDialog.AutoUpgradeEnabled = False
            Full_Path = "" : file_name = "" 
            OpenFileDialog.Multiselect = False

            Try
    <<Here I am getting exception>>    

                If (OpenFileDialog.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK) Then
                    EMS_Dir = OpenFileDialog.FileName 'get the path
                    EMS_Dir = StrReverse(EMS_Dir) 'reverse the string
                    EMS_Dir = Mid(EMS_Dir, InStr(EMS_Dir, "\"), Len(EMS_Dir)) 'extract from the first slash
                    EMS_Dir = StrReverse(EMS_Dir) 'reverse it again
                    'file_name = OpenFileDialog.SafeFileName
                    file_name = OpenFileDialog.FileName
                End If
            Catch ex As Exception
                Logger.LogInfo(ex) : MsgBox(ex.Message)
            End Try

        Catch ex As Exception
            Logger.LogInfo(ex) : MsgBox(ex.Message)
        End Try
    End Sub

请建议。

1 个答案:

答案 0 :(得分:0)

如果设置 AutoUpgradeEnabled属性,则会出现异常。不知道为什么,但确实存在。