Скрыть последних авторов
Alexandr Fokin 7.4 1 |(% style="width:399px" %)[[Имитация Async Deadlock>>doc:Разработка.NET.C#.Многопоточность и асинхронность.Сценарии.Имитация асинхронного (Async) Deadlock.WebHome]]|(% style="width:1094px" %)
2 |(% style="width:399px" %)[[Параллельность и асинхронность>>doc:.Параллельность и асинхронность.WebHome]]|(% style="width:1094px" %)
3 |(% style="width:399px" %)[[Пакетная обработка заявок с асинхронностью (Async)>>doc:.Пакетная обработка заявок с асинхронностью (Async).WebHome]]|(% style="width:1094px" %)
Alexandr Fokin 7.13 4 |(% style="width:399px" %)(((
5 OperationCanceledException
6
7 [[Исключения | Exception >>doc:Разработка.NET.C#.Исключения | Exception .WebHome]]
8 )))|(% style="width:1094px" %){{code language="c#"}}try
Alexandr Fokin 7.12 9 {
10 // action
11 }
12 catch(Exception ex)
13 {
14 if (
15 ex is OperationCanceledException oce
16 && oce.CancellationToken.Equals(cancellationToken)
17 )
18 {
19 return;
20 }
21
22 // log
23 }{{/code}}
Alexandr Fokin 7.5 24 |(% style="width:399px" %){{code language="C#"}}Task.Yield(){{/code}}|(% style="width:1094px" %)(((
Alexandr Fokin 7.4 25 When would I use Task.Yield()?
Alexandr Fokin 7.3 26 [[https:~~/~~/stackoverflow.com/questions/22645024/when-would-i-use-task-yield>>https://stackoverflow.com/questions/22645024/when-would-i-use-task-yield]]
Alexandr Fokin 1.2 27
Alexandr Fokin 7.4 28 Async, recursion, and some weirdness in design of asynchronous API in C#
29 [[https:~~/~~/alexyakunin.medium.com/async-recursion-and-some-weirdness-of-design-of-asynchronous-api-in-c-vs-f-a5760a00a26a>>https://alexyakunin.medium.com/async-recursion-and-some-weirdness-of-design-of-asynchronous-api-in-c-vs-f-a5760a00a26a]]
Alexandr Fokin 7.6 30
31 Настройка приостановки и возобновления с помощью Yield и ConfigureAwait
Alexandr Fokin 7.10 32 [[https:~~/~~/learn.microsoft.com/ru-ru/dotnet/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern#configuring-suspension-and-resumption-with-yield-and-configureawait>>https://learn.microsoft.com/ru-ru/dotnet/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern#configuring-suspension-and-resumption-with-yield-and-configureawait]]
Alexandr Fokin 7.11 33
34 Task.Yield() in library needs ConfigureWait(false)
35 [[https:~~/~~/stackoverflow.com/questions/28309185/task-yield-in-library-needs-configurewaitfalse>>https://stackoverflow.com/questions/28309185/task-yield-in-library-needs-configurewaitfalse]]
Alexandr Fokin 7.4 36 )))
Alexandr Fokin 7.8 37 |(% style="width:399px" %)Задать размер стека для потока.|(% style="width:1094px" %)(((
38 Можно задать через параметр конструктора потока.
Alexandr Fokin 7.7 39 Можно использовать для удобного тестирования логики (например рекурсии), которая может вызвать переполнение.
Alexandr Fokin 7.4 40
Alexandr Fokin 7.8 41 RuntimeHelpers.TryEnsureSufficientExecutionStack Метод
42 [[https:~~/~~/learn.microsoft.com/ru-ru/dotnet/api/system.runtime.compilerservices.runtimehelpers.tryensuresufficientexecutionstack?view=netcore-3.0>>https://learn.microsoft.com/ru-ru/dotnet/api/system.runtime.compilerservices.runtimehelpers.tryensuresufficientexecutionstack?view=netcore-3.0]]
Alexandr Fokin 7.9 43
44 Why is stack size in C# exactly 1 MB?
45 [[https:~~/~~/stackoverflow.com/questions/28656872/why-is-stack-size-in-c-sharp-exactly-1-mb>>https://stackoverflow.com/questions/28656872/why-is-stack-size-in-c-sharp-exactly-1-mb]]
Alexandr Fokin 7.8 46 )))