ado.net многопоточность идентификации критического раздела - PullRequest
0 голосов
/ 17 сентября 2018

Я новичок в многопоточности, и выяснение того, что является и не является критическим разделом, все еще является навыком, над которым я работаю.В этом примере у меня есть код ADO.NET в многопоточной среде, и я не уверен, нужно ли мне что-то здесь блокировать или нет.Например, "command.Parameters.AddRange (parms);"линия.Нужно ли беспокоиться о потоке, добавляющем параметры в другие потоки Коллекция параметров?

    internal async Task ExecuteNonQueryAsync(string spName, SqlParameter[] parms, TransactionScopeOption tranScopeOpt = TransactionScopeOption.Required)
    {
        using (TransactionScope scope = new TransactionScope(tranScopeOpt, TransactionScopeAsyncFlowOption.Enabled))
        {
            try
            {
                using (var connection = new SqlConnection(_connString))
                {
                    await connection.OpenAsync();
                    using (var command = new SqlCommand(spName, connection))
                    {
                        command.CommandType = CommandType.StoredProcedure;
                        command.Parameters.AddRange(parms);
                        await command.ExecuteNonQueryAsync();
                        scope.Complete();
                    }
                }
            }
            catch (Exception ex)
            {
                ...
            }
        }
    }
...