Исходный код вики Сценарии
Версия 7.16 от Alexandr Fokin на 2024/04/21 21:43
Скрыть последних авторов
| author | version | line-number | content |
|---|---|---|---|
| |
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" %) | ||
| |
7.13 | 4 | |(% style="width:399px" %)((( |
| 5 | OperationCanceledException | ||
| 6 | |||
| 7 | [[Исключения | Exception >>doc:Разработка.NET.C#.Исключения | Exception .WebHome]] | ||
| |
7.14 | 8 | )))|(% style="width:1094px" %){{code language="c#"}}// Когда идет остановка воркера, и нужно обработать OperationCanceledException без ошибки. |
| 9 | try | ||
| |
7.12 | 10 | { |
| 11 | // action | ||
| 12 | } | ||
| 13 | catch(Exception ex) | ||
| 14 | { | ||
| 15 | if ( | ||
| 16 | ex is OperationCanceledException oce | ||
| 17 | && oce.CancellationToken.Equals(cancellationToken) | ||
| 18 | ) | ||
| 19 | { | ||
| |
7.14 | 20 | // |
| |
7.12 | 21 | } |
| 22 | |||
| 23 | // log | ||
| 24 | }{{/code}} | ||
| |
7.16 | 25 | |(% style="width:399px" %)CancellationTokenSource CreateLinkedTokenSource|(% style="width:1094px" %)((( |
| 26 | When to dispose CancellationTokenSource? | ||
| |
7.15 | 27 | [[https:~~/~~/stackoverflow.com/questions/6960520/when-to-dispose-cancellationtokensource>>https://stackoverflow.com/questions/6960520/when-to-dispose-cancellationtokensource]] |
| |
7.16 | 28 | |
| 29 | {{code language="c#"}} | ||
| 30 | using var cancellationTokenSource = CancellationTokenSource.CreateLinkedTokenSource(extraToken) | ||
| 31 | {{/code}} | ||
| 32 | ))) | ||
| |
7.5 | 33 | |(% style="width:399px" %){{code language="C#"}}Task.Yield(){{/code}}|(% style="width:1094px" %)((( |
| |
7.4 | 34 | When would I use Task.Yield()? |
| |
7.3 | 35 | [[https:~~/~~/stackoverflow.com/questions/22645024/when-would-i-use-task-yield>>https://stackoverflow.com/questions/22645024/when-would-i-use-task-yield]] |
| |
1.2 | 36 | |
| |
7.4 | 37 | Async, recursion, and some weirdness in design of asynchronous API in C# |
| 38 | [[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]] | ||
| |
7.6 | 39 | |
| 40 | Настройка приостановки и возобновления с помощью Yield и ConfigureAwait | ||
| |
7.10 | 41 | [[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]] |
| |
7.11 | 42 | |
| 43 | Task.Yield() in library needs ConfigureWait(false) | ||
| 44 | [[https:~~/~~/stackoverflow.com/questions/28309185/task-yield-in-library-needs-configurewaitfalse>>https://stackoverflow.com/questions/28309185/task-yield-in-library-needs-configurewaitfalse]] | ||
| |
7.4 | 45 | ))) |
| |
7.8 | 46 | |(% style="width:399px" %)Задать размер стека для потока.|(% style="width:1094px" %)((( |
| 47 | Можно задать через параметр конструктора потока. | ||
| |
7.7 | 48 | Можно использовать для удобного тестирования логики (например рекурсии), которая может вызвать переполнение. |
| |
7.4 | 49 | |
| |
7.8 | 50 | RuntimeHelpers.TryEnsureSufficientExecutionStack Метод |
| 51 | [[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]] | ||
| |
7.9 | 52 | |
| 53 | Why is stack size in C# exactly 1 MB? | ||
| 54 | [[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]] | ||
| |
7.8 | 55 | ))) |