我有一个类,可以实例化一个独立进程的COM exe。这个类是
public class MyComObject:IDisposable
{
private bool disposed = false;
MyMath test;
public MyComObject()
{
test = new MyMath();
}
~MyComObject()
{
Dispose(false);
}
public double GetRandomID()
{
if (test != null)
return test.RandomID();
else
return -1;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
private void Dispose(bool disposing)
{
if (test != null)
{
Marshal.ReleaseComObject(test);
test = null;
}
disposed = true;
}
}
我将其称为以下内容:
static void Main(string[] args)
{
MyComObject test = new MyComObject();
MyComObject test2 = new MyComObject();
//Do stuff
test.Dispose();
test2.Dispose();
Console.ReadLine();
}
现在,当程序正常执行时,这会清理我的COM对象。但是,如果我在程序执行过程中关闭它,框架将永远不会调用释放我的非托管对象的代码。这很公平。但是,是否有一种方法可以强制程序即使被杀死也自我清理?
编辑:从任务管理器中进行强制终止看起来并不乐观 :(