我正在尝试学习取消令牌,我创建了一个简单的Windows窗体应用程序来应用它。但取消按钮不会创建任何取消请求。我有两个按钮,一个用于GetRequest,另一个是取消按钮和一个等待方法。 button1用于GetRequest,button2用于取消 下面是示例代码。谢谢您的帮助。
CancellationTokenSource tokenSource; // I have this one the top of the class
异步方法
private async Task CountPrime(int start, int count)
{
tokenSource = new CancellationTokenSource();
button2.Enabled = true;
button1.Enabled = false;
try
{
var result = await Task.Run(() =>
Enumerable.Range(start, count).Count(x =>
Enumerable.Range(start, (int)Math.Sqrt(x) - 1).All(y => x % y > 0)), tokenSource.Token);
MessageBox.Show(result.ToString());
}
catch (OperationCanceledException ex)
{
MessageBox.Show(ex.Message, "Cancelled");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Exception");
}
finally
{
button1.Enabled = true;
button2.Enabled = false;
}
}
以下是button1(获取请求)的代码
private async void button1_Click(object sender, EventArgs e)
{
await CountPrime(2, 3000000);
}
最后我有取消按钮
private void button2_Click(object sender, EventArgs e)
{
tokenSource.Cancel();
button2.Enabled = false;
}