Информация об изменениях

Сообщение CancellationTokenSource неудобный какой-то от 28.06.2022 9:45

Изменено 28.06.2022 9:58 Barbar1an

CancellationTokenSource неудобный какой-то
вот приходит мне общий токен отмены как параметн, а я хочу чтобы отменялось не тока по нему, но и по указанному таймауту

мне что вот стока хлама нада написать?


void Get(CancellationToken cancellation)
{
    using(var cts1 = new CancellationTokenSource(10 * 1000))
    {
        var lcts1 = CancellationTokenSource.CreateLinkedTokenSource(cancellation, cts1.Token);
    
        var h = Connect(Role.Hub, d.HubsSeeders.Keys, lcts1.Token);
    
        using(var cts2 = new CancellationTokenSource(20 * 1000))
        {
            var lcts2 = CancellationTokenSource.CreateLinkedTokenSource(cancellation, cts2.Token);
    
            var lp = h.LocatePackage(package, 16, lcts2.Token);
        }
    }
}
CancellationTokenSource неудобный какой-то
вот приходит мне общий токен отмены как параметн, а я хочу чтобы отменялось не тока по нему, но и по указанному таймауту

мне что вот стока хлама нада написать?


void Get(CancellationToken cancellation)
{
    using(var cts1 = new CancellationTokenSource(10 * 1000))
    {
        foreach(var h in Hubs)
        {
            var lcts1 = CancellationTokenSource.CreateLinkedTokenSource(cancellation, cts1.Token);
        
            var h = Connect(h, lcts1.Token);
        
            using(var cts2 = new CancellationTokenSource(10 * 1000))
            {
                var lcts2 = CancellationTokenSource.CreateLinkedTokenSource(cancellation, cts2.Token);
        
                var lp = h.LocatePackage(package, lcts2.Token);
            }
        }
    }
}


причем CancelAfter я не могу использовать потому что отмена по таймауту не долждна отменять всё, а только значить что я не мог подключиться к этому хабу и попробую другой