zoukankan      html  css  js  c++  java
  • 多线程同步

    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;
            }
  • 相关阅读:
    Emmet 语法
    GitHub常用命令
    ProgressBar.js – 漂亮的响应式 SVG 进度条
    99个漂亮的注册和登录页设计(附PSD)
    android Acitivity之间的几种传值方式(^_^)
    Android 动态生成 EditTest
    Android 小笔记
    winfrom获取用户控件里的控件对象
    MVC+Easeyui dialog的小问题
    bootStrap
  • 原文地址:https://www.cnblogs.com/daixingqing/p/4437271.html
Copyright © 2011-2022 走看看