2010-01-22 51 views
3

我有一个C#.NET程序集,可以从C++ COM客户端调用。当客户端进程明确释放COM对象时,CCW将释放它的内部引用,从而使.NET对象有资格进行垃圾回收。COM可调用包装和.NET对象的生存期

如果.NET对象具有打开日志文件的静态构造函数会怎么样?是否有一个优雅的解决方案来关闭日志文件,而不需要客户端的明确请求?

TIA。

回答

1

使用AppDomain.ProcessExit EventHandler进行了一些测试后,似乎是关闭日志文件的不错选择。

0

如果你不想修改COM客户端,那么你对任何确定的近距离魔法都是不好的。最终,文件处理在未来的一段时间内被关闭(假设它是一个FileStream)当手柄的终结由GC叫你CCW失去了GC根后(一个或多个)

-Oisin

+0

客户端进程结束时会调用终结器吗? – 2010-01-22 15:52:52

+0

如果这是一个进程内COM服务器:是的。 – 2010-01-22 16:05:40

+0

使用AppDomain.ProcessExit EventHandler进行了一些测试后,似乎是关闭日志文件的不错选择。 – 2010-01-26 07:23:07