Редактировал(а) Alexandr Fokin 2024/03/23 17:02

<
От версии < 5.4 >
отредактировано Alexandr Fokin
на 2024/03/23 16:49
К версии < 6.6
отредактировано Alexandr Fokin
на 2024/03/23 17:02
Изменить комментарий: К данной версии нет комментариев

Комментарий

Подробности

Свойства страницы
Содержимое
... ... @@ -1,18 +1,10 @@
1 -| |
2 -| |(((
3 -[[Асинхронность. Async Await>>doc:Разработка.NET.C#.Многопоточность и асинхронность.Асинхронность\. Async Await.WebHome]]
4 -
5 -[[TaskFactory>>doc:Разработка.NET.C#.Многопоточность и асинхронность.TaskFactory.WebHome]]
6 -
1 +| |В данном примере мы имитируем ограничение на использование одного потока (которые возникает в некоторых типах приложений, [[SynchronizationContext ~~| Контекст синхронизации>>doc:Разработка.NET.C#.Многопоточность и асинхронность.Асинхронность\. Async Await.SynchronizationContext | Контекст синхронизации.WebHome]]).
2 +После этого мы блокируем поток синхронным ожидаем, из-за чего асинхронная задача не может выполнить продолжение (continuation), т.к. она тоже запланирована на выполнение в этом (заблокированном) потоке.
3 +| |[[Асинхронность. Async Await>>doc:Разработка.NET.C#.Многопоточность и асинхронность.Асинхронность\. Async Await.WebHome]]
7 7  [[Проблемы>>doc:Разработка.NET.C#.Многопоточность и асинхронность.Асинхронность\. Async Await.Проблемы.WebHome]]
8 -)))
9 -| |
10 -
11 -----
12 -
13 -
14 -{{code language="C#"}}
15 -[TestMethod]
5 +| |[[Task Factory>>doc:Разработка.NET.C#.Многопоточность и асинхронность.Task Factory.WebHome]]
6 +[[SynchronizationContext ~~| Контекст синхронизации>>doc:Разработка.NET.C#.Многопоточность и асинхронность.Асинхронность\. Async Await.SynchronizationContext | Контекст синхронизации.WebHome]]
7 +| |{{code language="C#"}}[TestMethod]
16 16  public async Task AsyncDeadlockTest1Async()
17 17  {
18 18   var delay = TimeSpan.FromMilliseconds(100);
... ... @@ -56,5 +56,4 @@
56 56   await Assert.ThrowsExceptionAsync<OperationCanceledException>(
57 57   async () => await task
58 58   );
59 -}
60 -{{/code}}
51 +}{{/code}}