Не удается поймать исключение, вызванное C dll, вызванным через PInvoke

Я пишу программу на C # .NET 3.5, в которой используется последняя версия MediaInfoLib Dll .
Похоже, это вызывает исключение для некоторых файлов.

Я хочу перехватить эти исключения и убедиться, что моя программа продолжает работать,
но по какой-то причине я не могу поймать его с помощью простого оператора try / catch.

Методы PInvoke:

    [DllImport("MediaInfo.dll")]
    private static extern IntPtr MediaInfo_New();
    [DllImport("MediaInfo.dll")]
    private static extern IntPtr MediaInfo_Open(IntPtr Handle,MarshalAs(UnmanagedType.LPWStr)] string FileName);

Использование:

    Handle = MediaInfo_New();
    try{
        MediaInfo_Open(Handle, FileName)
    } catch { } 

Вызов MediaInfo_Open (Handle, FileName) может вызвать исключение.
Вместо того, чтобы отловить ошибку с помощью оператора try / catch, моя программа завершает работу и "vshost32-clr2.exe" дает сбой. (Он также вылетает как сборка выпуска без подключенного отладчика)
После поиска в Интернете я нашел человека, который предложил установить флажок «Включить отладку неуправляемого кода», в результате чего моя программа завершилась без сбоя vshost32-clr2.exe.

Есть идеи, как я могу поймать исключение?

6
задан Arokh 13 February 2011 в 22:49
поделиться