Сообщение CancellationTokenSource неудобный какой-то от 28.06.2022 9:45
Изменено 28.06.2022 10:19 Barbar1an
CancellationTokenSource неудобный какой-то
вот приходит мне общий токен отмены как параметн, а я хочу чтобы отменялось не тока по нему, но и по указанному таймауту
мне что вот стока хлама нада написать?
причем CancelAfter я не могу использовать потому что отмена по таймауту не долждна отменять всё, а только значить что я не мог подключиться к этому хабу и попробую другой
хотя... вроде можно так:
мне что вот стока хлама нада написать?
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 я не могу использовать потому что отмена по таймауту не долждна отменять всё, а только значить что я не мог подключиться к этому хабу и попробую другой
хотя... вроде можно так:
void Get(CancellationToken cancellation)
{
using(var cts1 = new CancellationTokenSource(10 * 1000))
{
var lcts1 = CancellationTokenSource.CreateLinkedTokenSource(cancellation, cts1.Token);
foreach(var h in Hubs)
{
lcts.CancelAfter(10 * 3000);
var h = Connect(h, lcts1.Token);
lcts.CancelAfter(10 * 3000);
var lp = h.LocatePackage(package, lcts1.Token);
}
}
}CancellationTokenSource неудобный какой-то
вот приходит мне общий токен отмены как параметн, а я хочу чтобы отменялось не тока по нему, но и по указанному таймауту
мне что вот стока хлама нада написать?
причем CancelAfter я не могу использовать потому что отмена по таймауту не долждна отменять всё, а только значить что я не мог подключиться к этому хабу и попробую другой
хотя... вроде можно так:
мне что вот стока хлама нада написать?
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 я не могу использовать потому что отмена по таймауту не долждна отменять всё, а только значить что я не мог подключиться к этому хабу и попробую другой
хотя... вроде можно так:
void Get(CancellationToken cancellation)
{
using(var cts1 = new CancellationTokenSource())
{
var lcts1 = CancellationTokenSource.CreateLinkedTokenSource(cancellation, cts1.Token);
foreach(var h in Hubs)
{
lcts.CancelAfter(10 * 1000);
var h = Connect(h, lcts1.Token);
lcts.CancelAfter(10 * 1000);
var lp = h.LocatePackage(package, lcts1.Token);
}
}
}