Отцепиться от DLL.

YUBA
Дата: 17.04.2014 13:51:56
Программа работает с приложением стороннего разработчика (ПСР), цепляясь к ней через его же DLL.
DLLLib oDLL = new DLLLib();
//После использования
//Отписка от всех событий. Программа использует несколько.
oDLL.Unsubscribe();
//и под завязку
oDll = null;

Программа пишется, и потому все время останавливаем, редактируем, запускаем снова.
Беда в том, что после завершения и повторного запуска программы, ПСР перестает выдавать события. Нужно ПСР перезапускать, и только тогда все ОК. При завершении ПСР пишет, что оно подсоединено к активному COM-объекту.
Что делать, чтобы моя прога при завершении освобождала DLL? Никаких методов типа Dispose() или Finalize() в DLL нет.

"Есть многое на свете, друг Горацио, что и не сразу в голову придет."
М. Твен "Приключения Геккельбери Финна"
Изопропил
Дата: 17.04.2014 14:45:34
YUBA,

попробуй

            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();


если не поможет - можно будет пытаться в отдельный домен грузить
YUBA
Дата: 17.04.2014 15:26:01
Изопропил
YUBA,

попробуй

            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();
если не поможет - можно будет пытаться в отдельный домен грузить

Пришел к близкому выводу -GC.Collect();. Не пошло.
Без дальнейшего
GC.WaitForPendingFinalizers();
GC.Collect();
работать не хочет. А с этим все ОК. Отцепляется. События при перезапуске идут.
Спасибо.
pation
Дата: 17.04.2014 18:22:16
YUBA,

Process.Kill
Изопропил
Дата: 17.04.2014 21:53:34
pation
YUBA,

Process.Kill

говно
Алексей К
Дата: 18.04.2014 07:44:56
DLLLib oDLL = new DLLLib();
//После использования
//Отписка от всех событий. Программа использует несколько.
oDLL.Unsubscribe();
//и под завязку
Marshal.ReleaseComObject(oDLL);