我非常感谢你的帮助。我的申请如下,
操作系统: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
请建议。
答案 0 :(得分:0)
如果设置 AutoUpgradeEnabled
属性,则会出现异常。不知道为什么,但确实存在。