static void Main(string[] args) { SafeSingleton instance1 = null; SafeSingleton instance2 = null; SafeSingleton instance3 = null; Task task1 = Task.Run(() => createSingleton(out instance1)); Task task2 = Task.Run(() => createSingleton(out instance2)); Task task3 = Task.Run(() => createSingleton(out instance3)); task1.Wait(); task2.Wait(); task3.Wait(); Console.WriteLine("Tasks run complete!"); Console.WriteLine($"Number of created instances: {SafeSingleton.Instances}"); instance1.DoWork(); instance2.DoWork(); instance3.DoWork(); }
static void createSingleton(out SafeSingleton instance) { instance = SafeSingleton.Instance; instance.Name = Task.CurrentId.ToString(); Console.WriteLine("Running task id: " + Task.CurrentId.ToString()); }