Example #1
0
        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();
        }
Example #2
0
 static void createSingleton(out SafeSingleton instance)
 {
     instance      = SafeSingleton.Instance;
     instance.Name = Task.CurrentId.ToString();
     Console.WriteLine("Running task id: " + Task.CurrentId.ToString());
 }