.net double lock

来源:互联网 发布:施工进度计算软件 编辑:程序博客网 时间:2024/05/16 15:49

using System;

using System.Web;

using System.Threading;

 using Db4objects.Db4o;

 namespace com.faq.objs

{  

  public class DB4Helper 

   {      

  public static readonly string DB4O_FILE = HttpRuntime.BinDirectory + "//..//App_Data//db4o_faq.odb";    

    private static IObjectContainer _db4o;       

 private static object _lockobj;       

  private static object SyncObject    

    {            get         

   {                if (_lockobj == null)            

    {                    object temp_obj = new object();                    Interlocked.CompareExchange(ref _lockobj, temp_obj, null);     

           }                return _lockobj;            }        }         public static IObjectContainer DB4o        {            get            {                if (_db4o == null)                {                    lock (SyncObject)                    {                        _db4o = Db4oFactory.OpenFile(DB4O_FILE);                    }                }                return _db4o;            }        }    }}

原创粉丝点击