Как обработать AccessViolationException

Я использую COM-объект (СПОСОБЫ) из моего приложения .NET. Метод я называю броски Системой. AccessViolationException, который прерывается Visual Studio. Нечетная вещь состоит в том, что я перенес свой вызов в выгоду попытки, которая имеет обработчики для AccessViolationException, COMException и всего остального, но когда Visual Studio (2010) прерывания AccessViolationException, отладчик повреждается на вызове метода (документ. OCR), и если я ступаю через, он продолжается к следующей строке вместо того, чтобы ввести блок выгоды. Кроме того, если я выполняю это за пределами Visual Studio мои сбои приложения. Как я могу обработать это исключение, которое выдается в COM-объекте?

MODI.Document doc = new MODI.Document();
try
{
    doc.Create(sFileName);
    try
    {
        doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, false, false);
        sText = doc.Images[0].Layout.Text;
    }
    catch (System.AccessViolationException ex)
    {
        //MODI seems to get access violations for some reason, but is still able to return the OCR text.
        sText = doc.Images[0].Layout.Text;
    }
    catch (System.Runtime.InteropServices.COMException ex)
    {
        //if no text exists, the engine throws an exception.
        sText = "";
    }
    catch
    {
        sText = "";
    }

    if (sText != null)
    {
        sText = sText.Trim();
    }
}
finally
{
    doc.Close(false);

    //Cleanup routine, this is how we are able to delete files used by MODI.
    System.Runtime.InteropServices.Marshal.FinalReleaseComObject(doc);
    doc = null;
    GC.WaitForPendingFinalizers();
    GC.Collect();
    GC.WaitForPendingFinalizers();

}
170
задан Jeremy 12 August 2010 в 15:33
поделиться

1 ответ

Вы можете попробовать использовать AppDomain.UnhandledException и посмотреть, позволит ли это поймать его.

**EDIT*

Вот дополнительная информация, которая может оказаться полезной (читать долго).

1
ответ дан 23 November 2019 в 20:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: