91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

如何在WinForm中實現異步任務的取消與中斷

小樊
121
2024-08-21 12:19:30
欄目: 智能運維

要在WinForm中實現異步任務的取消和中斷,可以使用CancellationToken來實現。以下是一種通用的方法:

  1. 首先,在WinForm界面中創建一個取消按鈕,當用戶點擊此按鈕時,觸發取消操作。

  2. 創建一個CancellationTokenSource對象,并將其Token屬性傳遞給異步任務方法。

  3. 在異步任務方法中,定期檢查CancellationToken的IsCancellationRequested屬性,如果為true,則拋出OperationCanceledException異常來中斷任務。

  4. 在取消按鈕的Click事件處理程序中,調用CancellationTokenSource的Cancel方法來取消任務。

下面是一個簡單的示例代碼:

private CancellationTokenSource cancellationTokenSource;

private async void StartAsyncTask()
{
    cancellationTokenSource = new CancellationTokenSource();
    
    try
    {
        await Task.Run(() =>
        {
            for (int i = 0; i < 100; i++)
            {
                // 檢查取消標記
                if (cancellationTokenSource.Token.IsCancellationRequested)
                {
                    throw new OperationCanceledException();
                }
                
                // 執行異步任務
                // 例如:Thread.Sleep(1000);
            }
        }, cancellationTokenSource.Token);
    }
    catch (OperationCanceledException)
    {
        // 任務被取消
        MessageBox.Show("任務已取消");
    }
}

private void btnCancel_Click(object sender, EventArgs e)
{
    if (cancellationTokenSource != null)
    {
        cancellationTokenSource.Cancel();
    }
}

在上面的示例中,StartAsyncTask方法啟動一個異步任務,并在每次循環中檢查取消標記。取消按鈕的Click事件處理程序調用Cancel方法取消任務。當任務被取消時,會捕獲OperationCanceledException異常并顯示一個消息框。

0
尉氏县| 克东县| 景宁| 辽中县| 柘荣县| 潜山县| 炎陵县| 山东省| 陈巴尔虎旗| 囊谦县| 米易县| 德兴市| 大城县| 鹤庆县| 松阳县| 五峰| 天长市| 城固县| 寿宁县| 息烽县| 哈密市| 泰顺县| 彭山县| 永善县| 饶阳县| 和硕县| 沁源县| 乌鲁木齐县| 安图县| 武邑县| 寿光市| 台南县| 台南市| 威远县| 陈巴尔虎旗| 呼伦贝尔市| 东光县| 德钦县| 朝阳县| 利川市| 西乌|