PrivateSystem.Threading.ReaderWriterLock RWL; PublicDataBase () {RWL=NewSystem.Threading.ReaderWriterLock (); } /// <summary> ///The method command executes the ExecuteReader operation/// </summary> PublicIDataReader Execsqlreader (stringSQLText, 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 (); returnDrreader; }
Private Static ObjectObjlock =New Object(); /// <summary> ///The method command executes the ExecuteReader operation/// </summary> PublicIDataReader Execsqlreader (stringSQLText, list<idbdataparameter> parameterlist =NULL) { Lock(objlock) {IDataReader drreader; SqlConnection (SQLText,false); Addparameter (parameterlist); Idbconnection.open (); Drreader=Idbcommand.executereader (System.Data.CommandBehavior.CloseConnection); returnDrreader; } }
Static inti =0; /// <summary> ///The method command executes the ExecuteReader operation/// </summary> PublicIDataReader Execsqlreader (stringSQLText, list<idbdataparameter> parameterlist =NULL) {IDataReader Drreader=NULL; while(true) { if(i = =0) {System.Threading.Interlocked.Increment (refi); SqlConnection (SQLText,false); Addparameter (parameterlist); Idbconnection.open (); Drreader=Idbcommand.executereader (System.Data.CommandBehavior.CloseConnection); System.Threading.Interlocked.Decrement (refi); Break; } } returnDrreader; }
Multi-threaded synchronization