Что происходит с продолжениями (ContinueWith/await) при вызове SetResult у TaskCompletionSource, и как избежать их исполнения «в линию» на потоке вызывающего?
👾 — Всегда выполняются в пуле потоков; ничего делать не нужно
👍 — Могут выполниться синхронно на вызывающем потоке; используйте new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously)
🥰 — Всегда возвращаются в захваченный SynchronizationContext; нужен ConfigureAwait(false)
⚡️ — Выполняются синхронно только если задача уже завершена
Библиотека задач по C#
Post #1159
1.41K
- ⚡ 6
- 👍 1