使用SqlCommand处理泄漏

时间:2018-06-11 11:53:12

标签: sqlcommand handle-leak

我有一个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;

0 个答案:

没有答案
相关问题