我有一个C#应用程序,它在一个无限循环的表中插入一行数据,每次迭代延迟1秒。当我执行应用程序时,数据库表中的插入工作正常,但在执行5分钟操作后,应用程序句柄计数不断增加(使用任务管理器监视)。任何人都知道这里出了什么问题?有趣的是,当我删除Sleep(1000)调用时,没有发生句柄泄漏。以下是我使用的代码:
int I64Counter = 1;
SqlConnection objConnection;
SqlConnectionStringBuilder objBuilder;
objBuilder = new SqlConnectionStringBuilder();
objBuilder.DataSource = sDatabaseServer;
objBuilder.IntegratedSecurity = true;
objBuilder.InitialCatalog = sDatabaseName;
objBuilder.ConnectTimeout = iConnectionTimeoutSeconds;
objConnection = new SqlConnection(objBuilder.ConnectionString);
objConnection.Open();
string sQuery = @"
IF NOT EXISTS (SELECT NAME FROM SYSOBJECTS WHERE NAME = 'TEST_TABLE')
CREATE TABLE TEST_TABLE(UUID VARCHAR(36),
SEQUENCE BIGINT)
";
using (SqlCommand objCommand = new SqlCommand(sQuery, objConnection))
{
objCommand.ExecuteNonQuery();
}
DB_OPERATION:
sQuery = string.Format(INSERT INTO TEST_TABLE VALUES('{0}', {1}), sUUID, I64Counter);
using (SqlCommand objCommand = new SqlCommand(sQuery, objConnection))
{
objCommand.ExecuteNonQuery();
}
I64Counter = I64Counter + 1;
Thread.Sleep(1000);
goto DB_OPERATION;