加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 静态一次性物品

发布时间:2020-12-15 04:26:27 所属栏目:百科 来源:网络整理
导读:如何用一次性物品管理静态课程?有没有经验法则? 基本上,我应该重构并使以下DisposableDataManager类非 静态还是把所有东西都留给GC呢 . public static class DisposableDataManager{ // ImageList is an 'IDisposable'. public static ImageList FirstImag
>如何用一次性物品管理静态课程?有没有经验法则?
>基本上,我应该重构并使以下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被升高和下降,但我怀疑它与您的场景相关).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读