ここであなたの助けに本当に感謝します. 私のアプリケーションは次のとおりです。
オペレーティング システム: Windows 7 64 ビット OS
Visual Studio: VS 2012
アプリケーション: .Net Framework 4 で実行される VB.Net
私のアプリケーションには、カスタム メソッド 'Select_Batch_File()' を呼び出すボタンがあります。このボタンをクリックすると、「OpenFileDialog」を開いて特定のファイルを選択することが想定されます。ただし、これは上記の構成のマシンで正常に機能します。一部の同僚のマシン (上記と同じ構成) では、これは機能せず、例外なく失敗します。次のような同僚のマシンからスレッド ダンプを収集しました。
======================
ログ名: アプリケーション
ソース: .NET ランタイム
日付: 2013 年 3 月 18 日 1:54:19 PM
イベント ID: 1026
タスク カテゴリ: なし
レベル: エラー
キーワード: クラシック
ユーザー: なし
説明:
アプリケーション: ビジュアル 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) で
===============
Visual Studio > Tools > Options > Debugging > 'Suppress JIT Optimization on module load (Managed only)' でオプションのチェックを外すようにユーザーに求めた MSDN フォーラムの解決策に従いましたが、うまくいきませんでした。
これが私のコードです
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
ご意見をお聞かせください。