Должен ли я освободить загруженный модуль при утилизации объекта? - PullRequest
1 голос
/ 30 января 2011

Я загружаю COM DLL, используя этот метод:

[DllImport("kernel32", CharSet = CharSet.Unicode, SetLastError = true)]
private extern static IntPtr LoadLibrary(string librayName);

Должен ли я выпустить DLL, используя:

[DllImport("kernel32", SetLastError = true)]
private static extern bool FreeLibrary(IntPtr hModule);

или просто позволить завершению приложения справиться с этим?

1 Ответ

4 голосов
/ 30 января 2011

Вам следует позвонить FreeLibrary, когда вы закончите использовать DLL, которую вы загрузили с помощью LoadLibrary. Это не будет проблемой, если ваше приложение долго не работает, и вы не загрузите многие из этих DLL, или если вы не захотите обновить DLL на диске (она будет заблокирована, пока она загружена).

Кстати, почему вы используете LoadLibrary для загрузки библиотеки DLL COM и не используете TLBIMP для создания оболочки, доступной для .NET?

...