Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, Serginio1, Вы писали:
S>> Я знаю. Именно пишу ConfigureAwait(true), что по уму нужно по умолчанию как раз ConfigureAwait(false), а ConfigureAwait(true) там, где нужно реально переключаться на поток GUI/
S>Первое правило любого предложения в стиле "а давайте сделаем так": посмотри на последствия.
Я как раз и смотрю и вижу косяки. При этом никто не знает про ConfigureAwait
S>Сейчас await task.ConfigureAwait(true); идентичен по поведению простому await task;. Это решение абсолютно правильно, т.к поведение заточено под конечных пользователей.
S>В твоём варианте большинство клиентского кода или содержало бы баги, или было бы отравлено копипастой с .ConfigureAwait. Это очень плохое решение, поэтому в фреймворк оно не прошло.
Большинство клиентского кода как раз потому, что сделали ConfigureAwait(true) по умолчанию и никто не знает про существование ConfigureAwait. И весь интернет усыпан вопросами о дедлоках.
При этом не везде в клиентском коде нужно переключатся на поток контекста.
При этом в ошибки установки свойств контрола в не потоке GUI можно возвращать ошибку про использовании ConfigureAwait, а с дедлоком вообще ничего не выдается.
S>P.S. Напоминаю:
S>>>P.S. Поправь оверквотинг в ответах. Читать же неудобно
S>Капсом писать что ли?
S>(rsdn позволяет редактировать ответы, если что).
Правлю.