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)
{
Run();
}
private void cancelButton_Click(object sender, EventArgs e)
{
cancelTokenSource.Cancel();
}
private async void Run()
@ -35,14 +35,28 @@ namespace CancelTask
cancelTokenSource = new CancellationTokenSource();
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()
{
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