使用 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();
     }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章