前言:
該示例適用於中止 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();
}