Last active
June 27, 2022 10:57
-
-
Save ppatidar-conga/3e1cd81d1c6db24d13181b004e310d74 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Class1 | |
{ | |
public async Task Method1() | |
{ | |
await Task.Delay(100000); | |
Console.WriteLine($"Class1.Method1"); | |
} | |
public async Task Method2() | |
{ | |
await Task.Delay(200000); | |
Console.WriteLine($"Class1.Method2"); | |
} | |
public async Task Method3() | |
{ | |
await Task.Delay(300000); | |
Console.WriteLine($"Class1.Method3"); | |
} | |
} | |
-------------- | |
public class Class2 | |
{ | |
public async Task Method1() | |
{ | |
Console.WriteLine($"Class2.Method1 "); | |
} | |
public async Task Method2() | |
{ | |
Console.WriteLine($"Class2.Method2 "); | |
} | |
public async Task Method3() | |
{ | |
Console.WriteLine($"Class2.Method3 "); | |
} | |
} | |
--------------------------------- | |
async Task MainAsync() | |
{ | |
var executor = new Executor(); | |
await executor.DoWork(); | |
} | |
--------------- | |
static void Main(string[] args) | |
{ | |
Console.WriteLine($"Hello World! "); | |
MainAsync().GetAwaiter().GetResult(); | |
Console.WriteLine($"Bye Bye World! "); | |
Console.ReadLine(); | |
} | |
################################### | |
Case 1: | |
---------- | |
public class Executor | |
{ | |
Class1 cls1; | |
Class2 cls2; | |
public Executor() | |
{ | |
cls1 = new Class1(); | |
cls2 = new Class2(); | |
} | |
public async Task DoWork() | |
{ | |
await cls1.Method1(); | |
await cls1.Method2(); | |
await cls1.Method3(); | |
await cls2.Method1(); | |
await cls2.Method2(); | |
await cls2.Method3(); | |
Console.WriteLine($"Do work done."); | |
} | |
} | |
################################### | |
Case 2: | |
---------- | |
public class Executor | |
{ | |
Class1 cls1; | |
Class2 cls2; | |
public Executor() | |
{ | |
cls1 = new Class1(); | |
cls2 = new Class2(); | |
} | |
public async Task DoWork() | |
{ | |
List<Task> tasks = new List<Task>(); | |
tasks.Add(cls1.Method1()); | |
tasks.Add(cls1.Method2()); | |
tasks.Add(cls1.Method3()); | |
tasks.Add(cls2.Method1()); | |
tasks.Add(cls2.Method2()); | |
tasks.Add(cls2.Method3()); | |
await Task.WhenAll(tasks); | |
Console.WriteLine($"Do work done."); | |
} | |
} | |
################################### | |
Case 3: | |
---------- | |
public class Executor | |
{ | |
Class1 cls1; | |
Class2 cls2; | |
public Executor() | |
{ | |
cls1 = new Class1(); | |
cls2 = new Class2(); | |
} | |
public async Task DoWork() | |
{ | |
List<Task> tasks = new List<Task>(); | |
tasks.Add(cls1.Method1()); | |
tasks.Add(cls1.Method2()); | |
tasks.Add(cls1.Method3()); | |
tasks.Add(cls2.Method1()); | |
tasks.Add(cls2.Method2()); | |
tasks.Add(cls2.Method3()); | |
await Task.WhenAny(tasks); | |
Console.WriteLine($"Do work done."); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment