/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Workspaces/Remote/Core/CancellationTokenSourceExtensions.cs
41 строка
2 KB
Cyrus Najmabadi
Use file scoped namespaces. (#77854)
27 мар 2025, 09:55
Не верифицирован
27 мар 2025, 09:55
98d41b8
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System; using System.Threading; using System.Threading.Tasks; namespace Microsoft.CodeAnalysis.Remote; internal static class CancellationTokenSourceExtensions { /// <summary> /// Automatically cancels the <paramref name="cancellationTokenSource"/> if the input <paramref name="task"/> /// completes in a <see cref="TaskStatus.Canceled"/> or <see cref="TaskStatus.Faulted"/> state. /// </summary> /// <param name="cancellationTokenSource">The cancellation token source.</param> /// <param name="task">The task to monitor.</param> public static void CancelOnAbnormalCompletion(this CancellationTokenSource cancellationTokenSource, Task task) { if (cancellationTokenSource is null) throw new ArgumentNullException(nameof(cancellationTokenSource)); _ = task.ContinueWith( static (_, state) => { try { ((CancellationTokenSource)state!).Cancel(); } catch (ObjectDisposedException) { // cancellation source is already disposed } }, state: cancellationTokenSource, CancellationToken.None, TaskContinuationOptions.NotOnRanToCompletion | TaskContinuationOptions.ExecuteSynchronously, TaskScheduler.Default); } }