1

我真的很感谢你在这里的帮助。我的申请如下,

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

在我的应用程序中,我有一个按钮,它调用我的自定义方法“Select_Batch_File()”。单击此按钮后,它将打开“OpenFileDialog”以选择特定文件。但是,这在我的具有上述配置的机器上运行良好;在我的一些同事机器上(具有上述相同的配置)这不起作用并且毫无例外地失败。我从同事的机器上收集了线程转储,如下所示,

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

日志名称:应用程序

来源:.NET 运行时

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

事件编号:1026

任务类别:无

级别:错误

关键词:经典

用户:不适用

描述:

应用程序: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

请指教。

4

1 回答 1

0

如果您设置AutoUpgradeEnabled属性,您将得到一个例外。不知道为什么,但它就在那里。

于 2013-03-19T07:06:53.193 回答