I have a winforms app that creates a COM application(namespace imported through references).
I would like to be able to know when the COM application is closed by the user in the .NET app. The COM app does not fire an event when it's closing - there is no published event.
Is there a way to find out if the COM app is no longer available or not? When the COM app is dead, the reference in .NET app is still valid, that is to say, it's not null. So when I try to access a method or a property using the reference, I get a COMException - RPCServer is not available.
Additionally, when I try to closed the COM app, I get a messagebox saying that there are active COM objects in the application(in the COM app). I am assuming that this is a feature of the COM app which I didn't write. Can someone explain why this happens? I am not very familiar with COM internals. I would think the reference is from .NET to COM not the other way around.
Thanks much.
Jiho
This might apply to you as well:
http://www.dotnetinterop.com/faq/?q=OfficeCleanup
http://support.microsoft.com/?kbid=317109
-----------
Ajay Kalra
ajaykalra@yahoo.com
> I have a winforms app that creates a COM application(namespace imported through references).
> I would like to be able to know when the COM application is closed by the user in the .NET app. The COM app does not fire an event when it's
closing - there is no published event.
> Is there a way to find out if the COM app is no longer available or not? When the COM app is dead, the reference in .NET app is still valid, that is
to say, it's not null. So when I try to access a method or a property using
the reference, I get a COMException - RPCServer is not available.
> Additionally, when I try to closed the COM app, I get a messagebox saying that there are active COM objects in the application(in the COM app). I am
assuming that this is a feature of the COM app which I didn't write. Can
someone explain why this happens? I am not very familiar with COM
internals. I would think the reference is from .NET to COM not the other
way around.
> Thanks much.
>
> Jiho
Jiho Han - 29 Nov 2004 15:43 GMT
Thanks for the links but those links address a situation where you close the external app from within the .NET app.
My situation is a bit different. The external app may be closed by the user at any time (or maybe even die for some reason) and I need to know when that happens.
Right now, the only way that I've been able to do this is to wrap the whole region that deals with the external app in a try-catch block and if it fails with COMException, I know it's dead. I was wondering whether there is a better solution.
Thanks much.
> This might apply to you as well:
>
[quoted text clipped - 35 lines]
>>
>> Jiho