使用 CancellationTokenSource 中止 Task

前言:

該示例適用於中止 Task


示例

示例 UI 基本爲如下圖
界面

示例代碼如下

     private CancellationTokenSource _cts;

     /// <summary>
     /// 開始按鈕
     /// </summary>
     /// <param name="sender"></param>
     /// <param name="e"></param>
     private async void StartButton_Click(object sender, EventArgs e)
     {
         StartButton.Enabled = false;
         _cts = new CancellationTokenSource();
         var token = _cts.Token;
         try
         {
             var textVal = await Task.Run(() =>
             {
                 var result = default(int);
                 while (true)
                 {
                     if (token.IsCancellationRequested)
                         break;
                     result++;
                     Thread.Sleep(200);
                 }
                 return result;
             });

             TaskTextBox.Text = textVal.ToString();
             MessageBox.Show("完成!");
         }
         catch (Exception ex)
         {
             MessageBox.Show(ex.Message);
         }
         StartButton.Enabled = true;
     }

     /// <summary>
     /// 停止按鈕
     /// </summary>
     /// <param name="sender"></param>
     /// <param name="e"></param>
     private void StopButton_Click(object sender, EventArgs e)
     {
         if (_cts != null)
             _cts.Cancel();
     }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章