строка подключения не меняется.
connections закрываются.
Рабочий режим (не debug!).
Получаю стандартный эксцепшин о переполнении пула MSSQL.
<add name="connstr" connectionString="Server=10.xx.xx.xx\SQL2005,1447;Database=XXX;User=User;Password=xxx;Min Pool Size=5;Max Pool Size=10000;" providerName="System.Data.SqlClient" />
используется реализация SmartThreadPool:
http://www.codeproject.com/KB/threads/smartthreadpool.aspx
Debug.Print("Start: {0},{1}", DateTime.Now, "Init");
threadPool.MaxThreads = 500;
threadPool.MinThreads = 100;
....
for(int i = 0; i < n; i++) {
try {
WorkItems.InitWorkItem item = new WorkItems.InitWorkItem();
threadPool.QueueWorkItem(new WorkItemCallback(item.Calculate), null);
}
}
catch (System.Exception e) {
throw new System.ApplicationException("Initializagtion Exception", e);
}
}
threadPool.WaitForIdle();
//так тоже пробовал на всякий случай:
// GC.Collect();
// GC.WaitForPendingFinalizers();
// GC.Collect();
//рабочий метод потока:
using (SqlConnection conn = new SqlConnection(ConnectionManager.GetConnectionString()))
{
using (SqlCommand cmd = new SqlCommand {
CommandText = "dbo.xsp_Init",
CommandType = CommandType.StoredProcedure,
Connection = conn
}) {
cmd.Parameters.AddWithValue("@xxx", x);
cmd.CommandTimeout = 0;
conn.Open();
try {
cmd.ExecuteNonQuery();
}
catch (Exception ex) {
throw new ApplicationException("Init Error:" + ex.Message, ex);
}
finnaly{
//на всякий случай так принудительно тоже пробовал закрывать
//conn.Close()
}
}
}