Здравствуйте, Аноним, Вы писали:
А>Sorry klava tolko angliyskaya.
А>"COM object that has been separated from its underlying RCW cannot be used."
А>Ya v finalayze vizivayou metody servera prejde chem ego ubit.
А>Esli finalays vipolnyaetsya v techenii raboti prilojeniya vse OK.
А>No esli on srabativayet v moment zakritiya prilojeniya — problemi.
Дело в том что в момент закрытия всё финализирует GC со своего треда, а твой ком сервер создан на другом треде.
Попробуй проинитить ком сервер из VB на MTA треде. Остальной код не трогай. Тогда у тебя проиниченный тред будет жив пока не убита ссыль на ком сервер.
Убивание ком сервера делай на Dispose(false), там же GC.SuppressFinalize, чтобы потом GC повторно не звал Finalize (который опять позовет Dispose).
Thread t = new Thread(delegate()
{
comInterface = <com interface init code>;
});
t.Start();
t.Join();
Должно заработать.