У меня есть приложение на C #, которое должно использовать устаревшую библиотеку Win32 DLL. DLL является почти собственным приложением, имеет диалоги, операции с оборудованием и т. Д. Когда эта DLL импортируется и используется, возникает пара проблем:
- Перетаскивание диалога (не Windows
системный диалог, но созданный
DLL) через приложение управляемого кода
заставляет пользовательский интерфейс не перекрашивать.
Далее он генерирует систему из
исключение памяти из различных интерфейсов
управление.
- Производительность невероятно
медленно.
- Кажется, нет никакого способа
выгрузить DLL, чтобы память никогда не
очищается. Когда мы закрываем наши
управляемое приложение, мы получаем другую память
исключение.
В данный момент мы импортируем каждый вызов метода как таковой:
[DllImport("dllname.dll",
EntryPoint = "MethodName", SetLastError = true,
CharSet = CharSet.Auto, ExactSpelling = true,
CallingConvention = CallingConvention.StdCall)]