我有一个函数可以发出一些 http 请求,并在一个任务中运行。该函数可以在中间中断,因为我无法中止任务,我在函数中添加了一些布尔条件。例子:
public int foo(ref bool cancel)
{
if(cancel)
{
return null
}
//do some work...
if(cancel)
{
return null
}
//http webrequest
if(cancel)
{
return null
}
}
这工作得很好,虽然这是一些相当丑陋的代码。
另一个问题是当我已经执行了网络请求时,我需要时间才能获得响应,而不是函数 cncelation 需要很多时间(直到我得到响应)。
我有更好的方法来检查吗?或者我应该使用线程而不是任务?
编辑
我添加了一个取消令牌:声明了一个 cancelationTokenSource,并将其令牌传递给任务
CancellationTokenSource cncelToken = new CancellationTokenSource();
Task t = new Task(() => {foo()},cancelToken.token);
当我做 cancelToken.Cancel(); 我还在等待回复,tsk 没有取消。