From aca2db84646fc017e4969799bc57d7c959639b22 Mon Sep 17 00:00:00 2001 From: syneffort Date: Fri, 11 Nov 2022 11:36:19 +0900 Subject: [PATCH] task cancel --- MultiThreadingStudy/CacelTask/Form1.cs | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/MultiThreadingStudy/CacelTask/Form1.cs b/MultiThreadingStudy/CacelTask/Form1.cs index eea9309..5abeba7 100644 --- a/MultiThreadingStudy/CacelTask/Form1.cs +++ b/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(LongCalcAsync, token); + Task task1 = Task.Factory.StartNew(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 }; } } }