Изменения документа Имитация асинхронного (Async) Deadlock
Редактировал(а) Alexandr Fokin 2024/03/23 17:02
<
отредактировано Alexandr Fokin
на 2024/03/23 16:49
на 2024/03/23 16:49
отредактировано Alexandr Fokin
на 2024/03/23 17:02
на 2024/03/23 17:02
Изменить комментарий:
К данной версии нет комментариев
Комментарий
-
Свойства страницы (1 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Содержимое
-
... ... @@ -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}}