|
Task.ConfigureAwait объясните.
|
|||
---|---|---|---|
#18+
Подскажите, нужно ли использовать Task.ConfigureAwait везде, во всех метода библиотеки которую пишу. Или только во "внешнем" методе который вызывается "снаружи" библиотеки. А уже внутри библиотеки вызывать методы между собой без Task.ConfigureAwait ? Как я это понимаю. НЕ нужно писать Task.ConfigureAwait только, и единственно, в местах, где есть синхронизационный контекст. Например при вызове из формы метод библиотеки, возвращающей Task. А внутри библиотек везде, где есть await он обязательно должен быть дополнен Task.ConfigureAwait: Короче. Так верно ? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Верно ли написано в button_Click ? Там ведь не нужен ConfigureAwait ? Как я понимаю. Писать там ConfigureAwait(false) вообще не верно ! В этом случае после вызова метода GetResultAsync дальнейшее управление уйдет в пул потоков, а из него нельзя будет обращаться к label1. Я все верно понимаю ? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2016, 18:33 |
|
Task.ConfigureAwait объясните.
|
|||
---|---|---|---|
#18+
использовать надо там, где это необходимо, а не везде, где только можно вставить. ConfigureAwait нужен для сохранения контекста выполнения, это может быть необязательно поток выполнения UI, нужно ли это в вашем конкретном случае? по моему, не нужно ... |
|||
:
Нравится:
Не нравится:
|
|||
29.02.2016, 05:32 |
|
Task.ConfigureAwait объясните.
|
|||
---|---|---|---|
#18+
Roman Mejtesиспользовать надо там, где это необходимо, а не везде, где только можно вставить.Использовать ConfigureAwait(false) надо везде, где не требуется продолжение через контекст синхронизации. Другое дело, что его тупо лень писать там, где экономия на контексте синхронизации == экономии "на спичках". ... |
|||
:
Нравится:
Не нравится:
|
|||
29.02.2016, 07:57 |
|
Task.ConfigureAwait объясните.
|
|||
---|---|---|---|
#18+
Здесь я вообще не понимаю, какой в нём смысл, ведь кода за оператором await нет (или почти нет). А следующая по стеку функция определяет всё по своему ConfigureAwait. Так что здесь в нём смысла не вижу. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.02.2016, 15:23 |
|
Task.ConfigureAwait объясните.
|
|||
---|---|---|---|
#18+
Ilya81, Мне кажется что если не указать ConfigureAwait в каком-то месте, то именно это место и "зацепит контекст" - что и приведет к проблемам. Таким образом, как я понимаю, ConfigureAwait обязан быть на каждом шаге алгоритма. Везде ! Упустите хоть один шаг, и он станет слабым звеном. Я это так понимаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2016, 01:08 |
|
Task.ConfigureAwait объясните.
|
|||
---|---|---|---|
#18+
AwaiterIlya81, Мне кажется что если не указать ConfigureAwait в каком-то месте, то именно это место и "зацепит контекст" - что и приведет к проблемам. Таким образом, как я понимаю, ConfigureAwait обязан быть на каждом шаге алгоритма. Везде ! Упустите хоть один шаг, и он станет слабым звеном. Я это так понимаю. Ну если только для защиты от неправильного использования, которое приводит к deadlock (когда поток контекста начинает ждать своего ж завершения). В это случае ConfigureAwait везде может помочь. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2016, 13:05 |
|
|
start [/forum/topic.php?fid=20&msg=39180922&tid=1400756]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 288ms |
total: | 429ms |
0 / 0 |