码迷,mamicode.com
首页 > 编程语言 > 详细

多线程同步

时间:2015-04-18 14:32:09      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

private System.Threading.ReaderWriterLock rwl;
        public DataBase()
        {
            rwl = new System.Threading.ReaderWriterLock();
        }
        /// <summary>
        /// 该方法Command执行ExecuteReader操作
        /// </summary>
        public IDataReader ExecSqlReader(string sqlText, List<IDbDataParameter> parameterList = null)
        {
            rwl.AcquireWriterLock(System.Threading.Timeout.Infinite);
            IDataReader drReader;
            SqlConnection(sqlText, false);
            AddParameter(parameterList);
            IDBConnection.Open();
            drReader = IDBCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
            rwl.ReleaseWriterLock();
            return drReader;
        }
private static object objLock = new object();
        /// <summary>
        /// 该方法Command执行ExecuteReader操作
        /// </summary>
        public IDataReader ExecSqlReader(string sqlText, List<IDbDataParameter> parameterList = null)
        {
            lock (objLock)
            {
                IDataReader drReader;
                SqlConnection(sqlText, false);
                AddParameter(parameterList);
                IDBConnection.Open();
                drReader = IDBCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection);

                return drReader;
            }
        }
static int i = 0;
        /// <summary>
        /// 该方法Command执行ExecuteReader操作
        /// </summary>
        public IDataReader ExecSqlReader(string sqlText, List<IDbDataParameter> parameterList = null)
        {
            IDataReader drReader = null;
            while (true)
            {
                if (i == 0)
                {
                    System.Threading.Interlocked.Increment(ref  i);
                    SqlConnection(sqlText, false);
                    AddParameter(parameterList);
                    IDBConnection.Open();
                    drReader = IDBCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
                    System.Threading.Interlocked.Decrement(ref  i);
                    break;
                }
            }
            return drReader;
        }

 

多线程同步

标签:

原文地址:http://www.cnblogs.com/daixingqing/p/4437271.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!