Код, который я пишу, копирует данные из одной таблицы в другую.Возможно, запрос может выполняться долго, поэтому я выполняю асинхронный запрос и, ожидая, я делаю подсчет в таблице назначения, чтобы обеспечить обновление статуса.
Запрос, который выполняет подсчетполучает следующее сообщение об исключении ...
Выполнение команды не может быть продолжено из-за незавершенной асинхронной операции, которая уже выполняется.
Итак, я четконе положено.Итак, каковы правила для асинхронных операций SQL?Есть ли другой способ получить статус ожидающей операции?
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder( _connectionString );
builder.AsynchronousProcessing = true;
using( SqlConnection connection = new SqlConnection( builder.ConnectionString ) )
{
connection.Open();
SqlCommand command = new SqlCommand();
command.Connection = connection;
command.CommandType = System.Data.CommandType.Text;
command.CommandText = "INSERT INTO DestTable SELECT * FROM SourceTable";
IAsyncResult result = command.BeginExecuteNonQuery();
using( SqlConnection statusConnection = new SqlConnection( _connectionString ) )
{
while( !result.IsCompleted )
{
SqlCommand statusCommand = new SqlCommand();
statusCommand.Connection = statusConnection;
statusCommand.CommandType = System.Data.CommandType.Text;
statusCommand.CommandText = "SELECT COUNT(*) FROM DestTable";
int currentRowCount = (int)command.ExecuteScalar();
Thread.Sleep( 500 );
}
command.EndExecuteNonQuery( result );
}
}