Sorry klava tolko angliyskaya.
COM server ispolzuetsya is dot neta VB. Obertka sdelana imptlb.exe.
Pri zakritii prilojeniya svoloch daiot exception
"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.
Kak ponyat chto etot finalize idet s zakritiem prilojenia?
Здравствуйте, Аноним, Вы писали:
А>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();
Должно заработать.