axAcroPDFLib при закрытии задачи C # - PullRequest
7 голосов
/ 01 сентября 2009

Я использую элемент управления axAcroPDFLib, взятый из установки Adobe Reader 9, чтобы показать и распечатать пользовательские документы PDF в моем приложении C # Window Forms. Все работает нормально, пока приложение не закроется ...

Выдает следующую ошибку:

Инструкция на "0x0700609c" ссылка на память в "0x00000014". память не может быть прочитана

Мой метод FormClosing довольно прост, и я думаю, что это неправильно, но я не знал, как сделать это правильно:

private void Form2_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (axAcroPDF1 != null)
        {   
            axAcroPDF1.Dispose();

        }
    }

заранее спасибо за любую идею

1 Ответ

11 голосов
/ 01 сентября 2009

Я только что понял, как правильно закрыть приложение:

    [System.Runtime.InteropServices.DllImport("ole32.dll")]
    static extern void CoFreeUnusedLibraries();

    private void Form2_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (axAcroPDF1 != null)
        {                                
            axAcroPDF1.Dispose();                
            System.Windows.Forms.Application.DoEvents();
            CoFreeUnusedLibraries(); 
        }
    }

при этом ошибка не выдается: D

...