Я имею дело с CSV-файлом, который импортируется на стороне клиента. Этот CSV должен содержать некоторую информацию, которая будет предназначена для выполнения обновления в одной из таблиц базы данных моей компании. Моя функция C# обрабатывает файл, ищет ошибки и, если ошибок не обнаружено, он отправляет кучу команд обновления (файлы обычно варьируются от 50 до 100000 строк). До сих пор я выполнял обновление в том же потоке, чтобы выполнить обновление (строка за строкой), но он немного замедлялся, в зависимости от файла, поэтому я решил отправить весь SQL в Azure SQL Queue (которая представляет собой услугу, которая получает множество «сообщений» и запускает код SQL снова в базе данных), так что клиенту не придется ждать, чтобы это было сделано. Он получил немного быстрее, но все еще занимает много времени (из-за запросов к очереди Azure SQL). Поэтому я заметил, что выполнение этого действия в отдельном потоке работало и отправило весь SQL в мою Azure SQL Queue.Безопасно ли выполнять длительное действие в отдельной теме?
Я немного волновался об этом. Действительно ли безопасно выполнять длительные действия в отдельных потоках? Это надежный?
Определение «безопасной ». Вам придется иметь дело с ошибками обработки/отчетности, поскольку вы не можете просто вернуть строку числа или ошибки. –
Вы знакомы с тем, как создавать временные таблицы на Sql-сервере, после чего вы можете создать XML-вставку Insert, которая может обрабатывать сразу все строки. Я делаю это в настоящее время, преобразовывая файл csv в datatable, а затем после того, как данные были загружены в данные, и проверки ошибок и т. Д. Выполнены .. тогда я написал свою собственную функцию для преобразования данных в XML, а затем один вызов сохраненного процедура Я делаю массовые вставки в одну таблицу через таблицы xml и temp – MethodMan
Использование потоков почти никогда не является безопасным. Природа зверя. Но если это простое обновление БД, это, скорее всего, не вызовет никаких проблем. Если вы можете использовать асинхронные операции (и, возможно, с поставщиками баз данных), я бы пошел по этому маршруту, так как я думаю, что вы достигнете своей цели реагирования пользователей немного более безопасно. –