2013-03-19 2 views
1

Я очень благодарен вам за помощь. Мое приложение выглядит следующим образом,Исключение «System.AccessViolationException» возникает при открытии «OpenFileDialog» в VB.Net (VS 2012)

Операционная система: Windows 7 64 Bit OS
Visual Studio: VS 2012
Применение: VB.Net работает на рамках .Net 4

В моем приложении, у меня есть кнопка который вызывает мой пользовательский метод «Select_Batch_File()». После нажатия этой кнопки предполагается открыть «OpenFileDialog» для выбора определенного файла. Однако это отлично работает на моей машине с вышеприведенной конфигурацией; на некоторых из моих коллег (с той же конфигурацией выше) это не работает и выходит из строя без каких-либо исключений. Я собрал дамп нить из машины моего коллеги, который, как следует,

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

Имя журнала: Application

источника: .NET время выполнение

Дата: 3/18/2013 1:54:19 PM

Код событие: 1026

Категория задачи: Отсутствует

Уровень: Ошибка

Ключевые слова: Классический

Пользователь: N/A

Описание:

Применение: Визуальный AEEMS.exe

Framework Версия: v4.0.30319

Описание: Процесс был прерван из-за необработанного исключения.

Exception Информация: System.AccessViolationException

Stack:

на 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 форум, где пользователи попросили снять флажок в визуальная студия> Инструменты> Параметры> Отладка> «Подавить оптимизацию 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

Это может не помочь в вопросе - но вы должны * определенно * ознакомиться с пространством имен System.IO, особенно с классом System.IO.Path. –

ответ

0

Вы получите исключение , если вы установилиAutoUpgradeEnabled. Не знаю почему, но вот оно.

+0

Я пробовал настройку «AutoUpgradeEmabled = false», но по-прежнему та же ошибка. Спасибо за ваш ответ. – Stack2Heap

+0

** не устанавливайте **. .Филлер-наполнитель. stoopid. –