using System.Threading.Tasks;
using System.Collections.Generic;
async static Task Main() {
var fireAndForgetter = new FireAndForgetter();
await fireAndForgetter.MyMethod();
fireAndForgetter.logger = null;
Console.WriteLine("--------------");
public class FireAndForgetter
public const int ITEMS_COUNT = 1000;
public void Log(string message) => Console.WriteLine(message);
public Logger logger = new Logger();
public async Task MyMethod() {
var things = Enumerable.Range(1, ITEMS_COUNT);
var tasks = new List<Task>();
foreach (var thing in things) {
tasks.Add(Task.Run(() => DoSomeStuffThatTakesAWhile(thing)));
public async Task DoSomeStuffThatTakesAWhile(int a) {
await Task.Delay(a * 15);
logger.Log(a.ToString());