Здравствуйте, swimmers, Вы писали:
S>Здравствуйте, Danchik, Вы писали:
D>>Нельзя такое делать, это сродни запуску одного запроса в пескольких потоках. D>>DataConnection НЕ потокобезопасен.
D>>Создайте два DataConnection и запустите эти запросы. Тогда будет ок.
S>Но ведь я явно не использую потоки. S>Я пытаюсь использовать таски.
А они типа не используют потоки. Даже одна таска запускается в разных потоках во время своей жизни.
Тут у вас получается что в Task Secheduler добавилось два таска. Один пошел к базе, задержался на IO операции, второй начал работу, тоже полез к базе, нарвался исключение DataProvider.
S>В библиотеке сделано множество ХххAsync расширений. Но по факту получается, что пользоваться ими в полной мере нельзя. Печально немного.
Хотите два паралельно работающих таска — создавайте два конекшина. Их создание дешевая операция.
Мы конечно можем поддержать здесь MARS, но это не лучшее решение, количество таких конекшинов ограничено да и не все провайдеры поддерживают.
Потом захочется два апдейта запустить паралельно — блокировать второй пока первый не прошел? Тогда зачем весь этот цирк c WhenAll?
С нашей стороны было бы неплохо выбросить правильное исключение если это возможно.