前言:
该示例适用于中止 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();
}