溫馨提示×

asp.net 異步怎樣處理異步任務取消

小樊
100
2024-12-09 18:46:19
欄目: 編程語言

在ASP.NET中,處理異步任務取消通常涉及到使用CancellationToken來控制任務的取消。以下是一個簡單的示例,展示了如何在ASP.NET中使用異步任務取消:

  1. 首先,創建一個異步方法,該方法接受一個CancellationToken參數:
public async Task PerformAsyncTask(CancellationToken cancellationToken)
{
    for (int i = 0; i < 10; i++)
    {
        // 檢查是否已取消
        cancellationToken.ThrowIfCancellationRequested();

        // 模擬執行異步任務
        await Task.Delay(1000);

        // 在這里執行您的實際任務邏輯
    }
}
  1. 在ASP.NET控制器中,創建一個異步操作,該操作將調用上述異步方法,并傳遞一個CancellationToken實例:
public class MyController : Controller
{
    public async Task<IActionResult> StartAsyncTask()
    {
        // 創建一個CancellationToken實例
        CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();

        // 開始異步任務
        await PerformAsyncTask(cancellationTokenSource.Token);

        // 如果任務被取消,返回一個錯誤響應
        if (cancellationTokenSource.Token.IsCancellationRequested)
        {
            return StatusCode(400, "異步任務被取消");
        }

        // 如果任務未完成,返回一個成功響應
        return Ok("異步任務完成");
    }
}
  1. 在客戶端(例如,瀏覽器),您可以使用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方法將檢查該令牌,并在任務被取消時返回一個錯誤響應。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女