






















单例模式大家都很熟悉,但是使用过程中,稍微不注意就会出现大问题。
单例模式:该类在整个系统生命周期中有且只有一个实例。
单例的创建:
注意问题:
例如:
public class CommonQuery
{private CommonQuery() { }object aLocker = new object();
static readonly CommonQuery _cmQuery = null;public static CommonQuery GetCommonQuery()
{
if(_cmQuery!=null)
{return _cmQuery;}return _cmQuery;
}单例中应该避免的问题:
以上2点问题主要针对内存的问题,因为单例是在整个系统生命周期中都一直存在,如果有大量信息被单例保存,可想而知,我们的内存伤不起啊,
导致的结果就是 内存溢出!
场景:
多任务定时采集某网站数据该需求 核心我一般这么设计:至少2个类
核心序列图:
核心类图:
基本上核心 就是上面2个类,
执行流程是:在CommonQuery中的 Start()方法中,生成N个(根据多线程需要)webWorker对象,执行具体任务,当该任务执行完成或者出错以后,便通过事件EFinished或者EError来
通知CommonQuery,此时CommonQuery 根据实际情况来处理是继续新建任务来执行,还是判断整个任务结束,通知前台UI。(整个过程采用多线程异步)
注意点:
这几点主要针对内存的建议,一般这种采集任务执行时间都较长,有时候需要连续几天不停的采集,此时如果设计的有问题,出现以上3中情况,呵呵,您的内存伤不起啊。。。
C#技术交流: 64913828
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。