Junior — Middle
Чӣ гуна метавон CancellationToken-ро барои бекор кардани амалҳои асинхронӣ дар лоиҳаи худ истифода бурд?
sobes.tech AI
Ҷавоб аз AI
Дархости CancellationToken дар C# барои бекор кардани амалҳои асинхронӣ истифода мешавад, ки имкон медиҳад иҷрои вазифаро дархостан ба таври дуруст қатъ кунад.
Дар лоиҳа, шумо метавонед CancellationToken-ро ба методҳое, ки бекориро дастгирӣ мекунанд, гузаронед ва ҳолати онро дар коди асинхронӣ санҷед. Агар токен сигнал диҳад, ки бекор кардан лозим аст, амал бояд пешакӣ ба анҷом расад, захираҳоро озод мекунад.
Маслиҳат барои истифода:
public async Task LoadDataAsync(CancellationToken cancellationToken)
{
for (int i = 0; i < 10; i++)
{
cancellationToken.ThrowIfCancellationRequested();
await Task.Delay(1000); // имитацияи кор
}
}
// Звон бо имконияти бекор кардан
var cts = new CancellationTokenSource();
var task = LoadDataAsync(cts.Token);
// Бекор кардан пас аз 3 соат
cts.CancelAfter(3000);
try
{
await task;
}
catch (OperationCanceledException)
{
Console.WriteLine("Амалиёт бекор карда шуд");
}
Ин усул имкон медиҳад, ки вақти иҷрои вазифаҳои асинхронӣ боэътимод идора карда шавад ва ҷавобгӯии барнома беҳтар гардад.