Index: mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/MSSQL/ProcedureTest.cs =================================================================== --- mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/MSSQL/ProcedureTest.cs (revision 556964) +++ mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/MSSQL/ProcedureTest.cs (working copy) @@ -113,8 +113,44 @@ Account account = sqlMap.QueryForObject("GetAccountViaSP2", hash) as Account; Assert.AreEqual(1, account.Id ); } - + /// + /// Test get an account via a store procedure. + /// + [Test] + public void GetThreadedAccountViaProcedure2() + { + + int maxThreads; + int maxCompletionPortThreads; + int curThreads; + + System.Threading.ThreadPool.GetMaxThreads(out maxThreads, out maxCompletionPortThreads); + + for (int i = 0; i < 1000; i++) + { + System.Threading.ThreadPool.QueueUserWorkItem(GetAccountViaProcedure2); + } + + while (true) + { + System.Threading.Thread.Sleep(100); + System.Threading.ThreadPool.GetAvailableThreads(out curThreads, out maxCompletionPortThreads); + if (curThreads == maxThreads) { + break; + } + } + } + + private void GetAccountViaProcedure2(Object o) + { + Hashtable hash = new Hashtable(); + hash.Add("Account_ID", 1); + Account account = sqlMap.QueryForObject("GetAccountViaSP2", hash) as Account; + Assert.AreEqual(1, account.Id); + } + + /// /// Test an insert with identity key via a store procedure. /// [Test] Index: mapper/IBatisNet.DataMapper/Commands/DefaultPreparedCommand.cs =================================================================== --- mapper/IBatisNet.DataMapper/Commands/DefaultPreparedCommand.cs (revision 556964) +++ mapper/IBatisNet.DataMapper/Commands/DefaultPreparedCommand.cs (working copy) @@ -51,8 +51,6 @@ #region Fields private static readonly ILog _logger = LogManager.GetLogger( MethodBase.GetCurrentMethod().DeclaringType ); - private StringBuilder _paramLogList = new StringBuilder(); // Log info - private StringBuilder _typeLogList = new StringBuilder(); // Log info #endregion @@ -100,11 +98,14 @@ StringCollection properties = request.PreparedStatement.DbParametersName; IDbDataParameter[] parameters = request.PreparedStatement.DbParameters; + StringBuilder _paramLogList = null; // Log info + StringBuilder _typeLogList = null; // Log info + #region Logging if (_logger.IsDebugEnabled) - { - _paramLogList.Remove(0, _paramLogList.Length); - _typeLogList.Remove(0, _typeLogList.Length); + { + _paramLogList = new StringBuilder(); + _typeLogList = new StringBuilder(); } #endregion