处置重复使用的对象

时间:2013-06-10 13:04:05

标签: c# object garbage-collection dispose

我环顾四周,找不到最佳做法。我有一个循环创建一个对象,然后每次运行一个进程时处理它。但是,此对象始终相同,并且每分钟左右在程序中使用,这也是程序中其他进程运行的频率。我应该每次运行进程时都在这个对象上调用Dispose();,还是只保留它,因为它总是完全一样?语言是C#。

4 个答案:

答案 0 :(得分:5)

如果按照您编写的方式工作,似乎您不应该改变它。除非创建或销毁对象特别昂贵。但是如果你不是每分钟都需要这个对象,那么为什么要保留它呢?

以这种方式看待它。如果对象仅由该特定任务使用,那么让该任务控制对象的生命周期会使代码更简单。否则,您的主程序必须在启动时创建对象并在关闭时将其丢弃。此外,程序中的其他线程或任务可能会访问它。限制对仅需要它的任务的访问可以防止出现许多其他问题。

答案 1 :(得分:0)

如果需要很长时间来初始化,你应该把它保留在某个地方。

根据对象的内容,您可能还需要考虑将其设为singleton.当您有一个需要很长时间初始化的对象时,和/或如果对象被用于多个地方。

答案 2 :(得分:0)

只创建一次对象,并在关闭你的app时调用dispose。 这也取决于你正在做什么。

答案 3 :(得分:0)

也许您应该查看using语句。它在使用后处理对象。 See this

这是语法

using (var myObject = new MyCustomObject())
{
//Do something with my object
}