I've got to call an application via COM interop from a C# .NET application. I've written a wrapper class to handle the COM stuff and all that works nice and shiny.
public sealed class ComWrapper : IDisposable
private Application comApplication = new Application(); // Referenced COM assembly.
private bool disposed;
// Several methods to interact with the com application.
public void Dispose()
private void Dispose(bool disposing)
if(comApplication != null && Marshal.IsComObject(comApplication));
comApplication = null;
disposed = true;
app = null;
If this is an external COM server you can do nothing from the client.
From your side, you can Do nothing else than you are already doing. Dispose the COM object and you are done. If the COM application is still alive, than there are some error handlers that causes the application not to close. Maybe it shows an error message.
But I am wondering, that you see a SVCHOST process. Is this a service? If so the SCM should manage the failure. COM usually host external servers inside a SVCHOST.EXE.
So maybe you didn't provide enough information about the kind of external process that is used.
BTW: Calling GC.Collect is never wise... ;)