Skip to content

Instantly share code, notes, and snippets.

@ppatidar-conga
Last active June 27, 2022 10:57
Show Gist options
  • Save ppatidar-conga/3e1cd81d1c6db24d13181b004e310d74 to your computer and use it in GitHub Desktop.
Save ppatidar-conga/3e1cd81d1c6db24d13181b004e310d74 to your computer and use it in GitHub Desktop.
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