【发布时间】:2019-12-09 05:49:04
【问题描述】:
我有创建 CancellationTokenSource 并将其传递给方法的代码。
我在另一个应用程序中的代码发出 cts.Cancel();
有没有一种方法可以使该方法立即停止,而无需等待 while 循环中的两行完成?
请注意,如果它导致我可以处理的异常,我会没事的。
public async Task OnAppearing()
{
cts = new CancellationTokenSource();
await GetCards(cts.Token);
}
public async Task GetCards(CancellationToken ct)
{
while (!ct.IsCancellationRequested)
{
App.viewablePhrases = App.DB.GetViewablePhrases(Settings.Mode, Settings.Pts);
await CheckAvailability();
}
}
【问题讨论】:
-
ct.ThrowIfCancellationRequested? -
合作取消。它所取代的旧 模型是threads 和thread.abort,它可以满足您的要求,但很难正确使用(在一般情况下),因此大部分都被放弃了。
-
@Damien_The_Unbeliever Thread.Abort 未在 .NET Core 中实现。但是,是的,它可以在 .NET Framework 中运行。
标签: c# multithreading task cancellationtokensource