Re[3]: Tasks
От: Danchik Украина  
Дата: 20.04.20 09:43
Оценка:
Здравствуйте, swimmers, Вы писали:

S>Здравствуйте, Danchik, Вы писали:


D>>Нельзя такое делать, это сродни запуску одного запроса в пескольких потоках.

D>>DataConnection НЕ потокобезопасен.

D>>Создайте два DataConnection и запустите эти запросы. Тогда будет ок.


S>Но ведь я явно не использую потоки.

S>Я пытаюсь использовать таски.

А они типа не используют потоки. Даже одна таска запускается в разных потоках во время своей жизни.
Тут у вас получается что в Task Secheduler добавилось два таска. Один пошел к базе, задержался на IO операции, второй начал работу, тоже полез к базе, нарвался исключение DataProvider.

S>В библиотеке сделано множество ХххAsync расширений. Но по факту получается, что пользоваться ими в полной мере нельзя. Печально немного.


Хотите два паралельно работающих таска — создавайте два конекшина. Их создание дешевая операция.
Мы конечно можем поддержать здесь MARS, но это не лучшее решение, количество таких конекшинов ограничено да и не все провайдеры поддерживают.
Потом захочется два апдейта запустить паралельно — блокировать второй пока первый не прошел? Тогда зачем весь этот цирк c WhenAll?

С нашей стороны было бы неплохо выбросить правильное исключение если это возможно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.