У меня есть набор команд SQL, которые не возвращают запрос, а только количество затронутых записей. Они работают на разных серверах.Выполнять несколько одновременных SqlCommand.ExecuteNonQuery() и получать уведомления, когда они заканчиваются
Они могут работать одновременно, мне не нужно ждать один финиш, чтобы начать с другого. Я разрабатываю приложение C#, я хотел бы выполнить их все параллельно, а затем дождаться их завершения и получения их возвратов int.
Первой идеей является использование нескольких потоков. Я создаю поток для запуска каждого SqlCommand.ExecuteNonQuery()
. Может быть, я создаю список bools, которые будут установлены в true, когда выполнение закончится. Затем, в основном потоке, я продолжаю проверять эти bools и спать, если какой-либо из них является ложным. Try-finally установил бы bool в true, даже если выбрано Exception.
Это лучшее решение? Может ли кто-нибудь подумать об этом лучше?
['ExecuteNonQueryAsync()'] (https://msdn.microsoft.com/en-us/library/system.data.common.dbcommand.executenonqueryasync (v = vs.110) .aspx) + [Задача. WaitAll()] (http://stackoverflow.com/q/25009437/1997232). – Sinatr
С какими проблемами вы сталкиваетесь с текущей реализацией? – niksofteng
@ Think2ceCode1ce Вы имеете в виду идею, которую я предоставил? Я еще не реализовал его, я спрашиваю, лучший ли это или есть лучший. – Hikari