你好,我有一个列表框。每当用户选择一个项目时,就会向Web发送请求。现在我想在用户选择项目并开始新操作时取消以前的操作。
我使用了以下代码来实现这一点。我想知道这些代码是否可以很好地工作。还是我应该尝试另一种方式?
private CancellationTokenSource ts = new CancellationTokenSource();
private async void Subf2mCore(CancellationToken ct)
{
HtmlDocument doc = await web.LoadFromWebAsync(url);
...
foreach (var node in doc)
{
if (!ct.IsCancellationRequested)
{
....
}
}
}
我是这样运行函数的
ts?.Cancel();
ts = new CancellationTokenSource();
Subf2mCore(ts.Token);
Subf2mCore
的执行,但要让其他人(即Subf2mCore
的调用者)知道:将其放置为private async Task Subf2mCore(CancellationToken ct) {...}
。 - Dmitry Bychenko