2010-01-21 87 views
2

我有一个使用Windows服务自托管的实例WCF服务类。我在OnStart事件中设置了服务主机,并关闭了OnStop事件中的服务。WCF服务关机

在服务类中,我实现了一个析构函数,我在那里有一些清理代码。清理代码本质上是将一些内部对象序列化为下一次的磁盘,并且应该生成两个文件。

我所看到的有时是两个文件,有时是一个,有时是空的文件,其中应该有数据。在整个服务过程结束之前,析构函数似乎没有时间完成对象的序列化。

这是在服务关闭之前做家务的典型方式,还是有更好的方法?

回答

4

析构函数是一个不好的地方做这种逻辑b/c你不能保证什么样的孩子或父母对象的状态。它们中的一些可能在调用析构函数时调用了它们的Dispose逻辑。

我建议你在你的类上放一个明确的Save方法,然后在OnStop中调用它。没有理由隐藏析构函数中的保存,并隐藏读取代码的人的副作用。