/
githubmirror
/
aspnetcore
Обзор
Документация
Войти
/
githubmirror
/
aspnetcore
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Mvc/test/WebSites/HtmlGenerationWebSite/SignalTokenProviderService.cs
47 строк
1 KB
Shreyas Jejurkar
chore : Remove unwanted `using` statement (#39176)
02 янв 2022, 17:39
Не верифицирован
02 янв 2022, 17:39
c85baf8
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Collections.Concurrent; using Microsoft.Extensions.Primitives; namespace HtmlGenerationWebSite; public class SignalTokenProviderService<TKey> : ISignalTokenProviderService<TKey> { private readonly ConcurrentDictionary<object, ChangeTokenInfo> _changeTokens = new ConcurrentDictionary<object, ChangeTokenInfo>(); public IChangeToken GetToken(object key) { return _changeTokens.GetOrAdd( key, _ => { var cancellationTokenSource = new CancellationTokenSource(); var changeToken = new CancellationChangeToken(cancellationTokenSource.Token); return new ChangeTokenInfo(changeToken, cancellationTokenSource); }).ChangeToken; } public void SignalToken(object key) { ChangeTokenInfo changeTokenInfo; if (_changeTokens.TryRemove(key, out changeTokenInfo)) { changeTokenInfo.TokenSource.Cancel(); } } private class ChangeTokenInfo { public ChangeTokenInfo(IChangeToken changeToken, CancellationTokenSource tokenSource) { ChangeToken = changeToken; TokenSource = tokenSource; } public IChangeToken ChangeToken { get; } public CancellationTokenSource TokenSource { get; } } }