Проверьте эту функцию.
private static IEnumerable<string> FindAccessibleDatabases()
{
var connectionStrings = new List<string>();
Parallel.For(0, _connectionStringCollection.Count, (index, loopState) =>
{
try
{
using (var connection = new OleDbConnection(_connectionStringCollection[index]))
{
connection.Open();
connectionStrings.Add(_connectionStringCollection[index]);
}
}
catch (OleDbException)
{
}
finally
{
connection.Close();
}
});
return connectionStrings.ToList();
}
Я использую Parallel.Foreach и добавляю значения в список из нескольких баз данных одновременно. Я могу использовать ConcurrentBag (это безопасно при извлечении данных, но добавление не упоминается), так как я просто добавляю данные в список, могу использовать List.
Теперь, если два потока попытаются добавить данные в список одновременно, что произойдет?
Если это создаст условия гонки, что если я использую ConcurrentBag?
Спасибо,
Omkar