task cancel

main
syneffort 3 years ago
parent 258c2d6b0a
commit aca2db8464
  1. 22
      MultiThreadingStudy/CacelTask/Form1.cs

@ -22,12 +22,12 @@ namespace CancelTask
private void runButton_Click(object sender, EventArgs e) private void runButton_Click(object sender, EventArgs e)
{ {
Run();
} }
private void cancelButton_Click(object sender, EventArgs e) private void cancelButton_Click(object sender, EventArgs e)
{ {
cancelTokenSource.Cancel();
} }
private async void Run() private async void Run()
@ -35,14 +35,28 @@ namespace CancelTask
cancelTokenSource = new CancellationTokenSource(); cancelTokenSource = new CancellationTokenSource();
CancellationToken token = cancelTokenSource.Token; CancellationToken token = cancelTokenSource.Token;
Task task1 = Task.Factory.StartNew<object>(LongCalcAsync, token); Task<object> task1 = Task.Factory.StartNew<object>(LongCalcAsync, token);
dynamic res = await Task; dynamic res = await task1;
if (res != null)
progressText.Text = $"Sum: {res.Sum}";
else
progressText.Text = "Canceled";
} }
private object LongCalcAsync() private object LongCalcAsync()
{ {
int sum = 0;
for (int i = 0; i < 100; i++)
{
if (cancelTokenSource.Token.IsCancellationRequested)
return null;
sum += i;
Thread.Sleep(1000);
}
return new { Sum = sum };
} }
} }
} }

Loading…
Cancel
Save