c# – 静态一次性物品

前端之家收集整理的这篇文章主要介绍了c# – 静态一次性物品前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
>如何用一次性物品管理静态课程?有没有经验法则?
>基本上,我应该重构并使以下DisposableDataManager类非
静态还是把所有东西都留给GC呢

.

public static class DisposableDataManager
{
    // ImageList is an 'IDisposable'.
    public static ImageList FirstImageList { get; private set; }
    public static ImageList SecondImageList { get; private set; }

    static DisposableDataManager()
    {
        FirstImageList = CreateFirstImageList();
        SecondImageList = CreateSecondImageList();        
    }

    // ...
}

解决方法

这真的取决于你对资源的处理有多重要.当您的应用程序关闭时,所有打开的手柄(文件,网络连接,图形等)将被释放,所以这不是问题.如果您希望处理更有序的发布,这更是一个问题 – 例如在关闭之前冲洗流.在进程退出之前,CLR做出了“尽力而为”的运行终结器,这在某些情况下反过来称为Dispose,但这并不是我想要依赖的重要任务.

所以在ImageList对象的情况下,真的不应该是一个问题.你绝对不会泄漏任何资源 – 操作系统会照顾的.

话虽如此,我仍然试图重构 – 只是因为全球国家往往是一个坏主意.它使依赖隐含,并且更难测试.在施工时向需要的每个物体提供相关信息是多难?

(注意:静态变量真的与AppDomain相关联,而不是整个进程,这使整个问题在应用程序中更复杂,AppDomains被升高和下降,但我怀疑它与您的场景相关).

猜你在找的C#相关文章