1

ここであなたの助けに本当に感謝します. 私のアプリケーションは次のとおりです。

オペレーティング システム: 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

ご意見をお聞かせください。

4

1 に答える 1

0

プロパティを設定すると、例外が発生しAutoUpgradeEnabledます。理由はわかりませんが、そこにあります。

于 2013-03-19T07:06:53.193 に答える