在ASP.NET中,处理异步任务取消通常涉及到使用CancellationToken
来控制任务的取消。以下是一个简单的示例,展示了如何在ASP.NET中使用异步任务取消:
- 首先,创建一个异步方法,该方法接受一个
CancellationToken
参数:
public async Task PerformAsyncTask(CancellationToken cancellationToken) { for (int i = 0; i < 10; i++) { // 检查是否已取消 cancellationToken.ThrowIfCancellationRequested(); // 模拟执行异步任务 await Task.Delay(1000); // 在这里执行您的实际任务逻辑 } }
- 在ASP.NET控制器中,创建一个异步操作,该操作将调用上述异步方法,并传递一个
CancellationToken
实例:
public class MyController : Controller { public async TaskStartAsyncTask() { // 创建一个CancellationToken实例 CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); // 开始异步任务 await PerformAsyncTask(cancellationTokenSource.Token); // 如果任务被取消,返回一个错误响应 if (cancellationTokenSource.Token.IsCancellationRequested) { return StatusCode(400, "异步任务被取消"); } // 如果任务未完成,返回一个成功响应 return Ok("异步任务完成"); } }
- 在客户端(例如,浏览器),您可以使用JavaScript来触发任务取消。例如,您可以使用
fetch
API发送一个请求,其中包含一个取消令牌:
async function cancelAsyncTask() { const response = await fetch('/MyController/StartAsyncTask', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ cancellationToken: 'your-cancellation-token-here' }) }); const result = await response.json(); console.log(result); }
在这个示例中,当客户端调用cancelAsyncTask
函数时,它将向服务器发送一个请求,其中包含一个取消令牌。服务器端的StartAsyncTask
方法将检查该令牌,并在任务被取消时返回一个错误响应。