我真的很感谢你在这里的帮助。我的申请如下,
操作系统: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
请指教。