Skip to content

Instantly share code, notes, and snippets.

@tienuit
Created September 3, 2020 01:38
Show Gist options
  • Save tienuit/c0a9ae3c96635464990ef93a46de6969 to your computer and use it in GitHub Desktop.
Save tienuit/c0a9ae3c96635464990ef93a46de6969 to your computer and use it in GitHub Desktop.
Async example
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace TestAsync
{
class Program
{
static async Task Main(string[] args)
{
await Example5Async();
Console.WriteLine("End!");
Console.ReadLine();
}
static async Task Example1Async()
{
var task1 = Task1();
await task1;
var task2 = Task2();
await task2;
}
static async Task Example2Async()
{
var task1 = Task1();
var task2 = Task2();
await task1;
await task2;
}
static void Example3Async()
{
Task1();
Task2();
}
static async Task Example4Async()
{
var task1 = Task1();
var task2 = Task2();
var allTasks = new Task[] { task1, task2 };
await Task.WhenAll(allTasks);
}
static async Task Example5Async()
{
var task1 = Task1();
var task2 = Task2();
var allTasks = new List<Task> { task1, task2 };
while (allTasks.Any())
{
Task finished = await Task.WhenAny(allTasks);
allTasks.Remove(finished);
}
}
static async Task<string> Task1()
{
var task1 = Task.Run(async () => {
await Task.Delay(5000);
Console.WriteLine("Task 1");
return "Hello";
});
return await task1;
}
static async Task<string> Task2()
{
var task2 = Task.Run(async () => {
await Task.Delay(3000);
Console.WriteLine("Task 2");
return "Hello";
});
return await task2;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment