Версия 2.4 от Alexandr Fokin на 2022/07/29 03:38

Последние авторы
1 === Понятие контекста синхронизации. ===
2
3 Не все типы приложений и фреймворки содержит такой компонент как контекст синхронизации.
4 Его основная цель - реализация механизма определения того, в каком потоке будет продолжаться выполнение кода после выхода из асинхронного ожидания (await).
5
6
7 | |
8 |{{code language="c#"}}// (По умолчанию)
9 ConfigureAwait(true){{/code}}(((
10
11 )))|Сообщает, что необходимо задействовать механизм контекста синхронизации для кода, идущего после выхода из данной асинхронной операции.
12 |{{code language="c#"}}ConfigureAwait(false){{/code}}|Сообщает, что код, идущего после выхода из данной асинхронной операции, может быть выполнен в любом потоке из пула потоков.
13
14 Например во многих графических фремворках менять состояние контролов можно только из UI Thread, если после асинхронной операции нам необходимо изменить контрол, то нужна гарантия того, что код будет выполнен в UI Thead, а не любом Thread из ThreadPool. [[Потоки и задачи>>doc:Разработка.NET.C#.Многопоточность.Потоки и задачи.WebHome]]
15
16 ----
17
18 === DeadLock при async await. ===
19
20 В некоторых случаях при неправильном использовании возможны ситуации, когда есть контекст синхронизации (UI контекст основного ui потока, ASP контекст запроса)
21 ConfigureAwait - указывает на то, должны ли операции продожаться в том же контексте после завершения await (или же они могут быть выполнены в любом контексте)
22 [[devblogs.microsoft| ConfigureAwait FAQ>>url:https://devblogs.microsoft.com/dotnet/configureawait-faq/?utm_source=csharp&utm_medium=email&utm_campaign=digest]]
23
24 ----
25
26 === Ссылки: ===
27
28 * SynchronizationContext — когда MSDN подводит
29 https://habr.com/ru/post/232169/
30 * IT - записки программиста: Контексты исполнения (ExecutionContext) и синхронизации (SynchronizationContext) - что это такое и с чем их едят ?
31 http://alz-it.blogspot.com/2016/06/executioncontext-synchronizationcontext.html
32 * Пишем свой SynchronizationContext
33 https://itnan.ru/post.php?c=1&p=269985