From 15a04508df711384630250d46028a53ea203f5c5 Mon Sep 17 00:00:00 2001 From: Yusuf Praditya <47532266+yusufpraditya@users.noreply.github.com> Date: Thu, 5 Oct 2023 12:18:07 +0700 Subject: [PATCH] Add W5 D4 program --- FormulatrixBootcamp.sln | 9 ++++++ W5 D3/AsyncAwait/Program.cs | 29 ++++++++++++++++--- .../CancellationToken.csproj | 10 +++++++ W5 D4/CancellationToken/Program.cs | 29 +++++++++++++++++++ 4 files changed, 73 insertions(+), 4 deletions(-) create mode 100644 W5 D4/CancellationToken/CancellationToken.csproj create mode 100644 W5 D4/CancellationToken/Program.cs diff --git a/FormulatrixBootcamp.sln b/FormulatrixBootcamp.sln index 2176253..1ce6123 100644 --- a/FormulatrixBootcamp.sln +++ b/FormulatrixBootcamp.sln @@ -141,6 +141,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Task", "W5 D3\Task\Task.csp EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AsyncAwait", "W5 D3\AsyncAwait\AsyncAwait.csproj", "{CCE2C0C8-CD08-44DA-AD87-32848B8B64A7}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "W5 D4", "W5 D4", "{5637E846-0989-4572-83A1-6CBC066E2D2D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CancellationToken", "W5 D4\CancellationToken\CancellationToken.csproj", "{09D51696-9994-41B5-9959-9DFD1B331B02}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -367,11 +371,16 @@ Global {CCE2C0C8-CD08-44DA-AD87-32848B8B64A7}.Debug|Any CPU.Build.0 = Debug|Any CPU {CCE2C0C8-CD08-44DA-AD87-32848B8B64A7}.Release|Any CPU.ActiveCfg = Release|Any CPU {CCE2C0C8-CD08-44DA-AD87-32848B8B64A7}.Release|Any CPU.Build.0 = Release|Any CPU + {09D51696-9994-41B5-9959-9DFD1B331B02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {09D51696-9994-41B5-9959-9DFD1B331B02}.Debug|Any CPU.Build.0 = Debug|Any CPU + {09D51696-9994-41B5-9959-9DFD1B331B02}.Release|Any CPU.ActiveCfg = Release|Any CPU + {09D51696-9994-41B5-9959-9DFD1B331B02}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution + {09D51696-9994-41B5-9959-9DFD1B331B02} = {5637E846-0989-4572-83A1-6CBC066E2D2D} {CCE2C0C8-CD08-44DA-AD87-32848B8B64A7} = {FC559EAF-E754-4775-A039-64B804F331A8} {C71461E0-7028-4153-94DC-75B522D07B10} = {FC559EAF-E754-4775-A039-64B804F331A8} {7A140AEF-0702-44C9-8F9A-972664EB83C9} = {FC559EAF-E754-4775-A039-64B804F331A8} diff --git a/W5 D3/AsyncAwait/Program.cs b/W5 D3/AsyncAwait/Program.cs index e7bf8b9..853f1bf 100644 --- a/W5 D3/AsyncAwait/Program.cs +++ b/W5 D3/AsyncAwait/Program.cs @@ -1,7 +1,28 @@ -public class Program +using System.Threading.Tasks; + +public class Program { static void Main() - { - - } + { + Console.WriteLine("Hello"); + Task.Run(LoopAsync); + while (true) + { + string? input = Console.ReadLine(); + if (input == "x") break; + else Console.WriteLine("Your input: " + input); + } + } + + static async Task LoopAsync() + { + await Task.Run(async () => + { + for (int i = 0; i < 100; i++) + { + Console.WriteLine(i); + await Task.Delay(1000); + } + }); + } } \ No newline at end of file diff --git a/W5 D4/CancellationToken/CancellationToken.csproj b/W5 D4/CancellationToken/CancellationToken.csproj new file mode 100644 index 0000000..f02677b --- /dev/null +++ b/W5 D4/CancellationToken/CancellationToken.csproj @@ -0,0 +1,10 @@ + + + + Exe + net7.0 + enable + enable + + + diff --git a/W5 D4/CancellationToken/Program.cs b/W5 D4/CancellationToken/Program.cs new file mode 100644 index 0000000..a601f02 --- /dev/null +++ b/W5 D4/CancellationToken/Program.cs @@ -0,0 +1,29 @@ +public class Program +{ + static void Main() + { + CancellationTokenSource cts = new(); + CancellationToken token = cts.Token; + + Task t1 = Task.Run(() => PrintLoop(token)); + + while (!t1.IsCanceled) + { + if (Console.ReadKey().KeyChar == 'x') + { + cts.Cancel(); + break; + } + } + } + + static async void PrintLoop(CancellationToken token) + { + int counter = 0; + while (!token.IsCancellationRequested) + { + Console.WriteLine(counter++); + await Task.Delay(1000); + } + } +} \ No newline at end of file