public async Task Test_ModifySharedDataWhileThreadExecuting()
        {
            ThreadsShareInstanceVaraibles t = new ThreadsShareInstanceVaraibles();

            for (int i = -10; i < 0; i++)
            {
                await t.WhatIfYouModifySharedDataWhileThreadExecuting();
            }
            //List<Task> taskList = new List<Task>();
            //for (int i = -10; i < 0; i++)
            //{
            //    taskList.Add(Task.Factory.StartNew(() => Console.WriteLine(i)));
            //}

            //Task.WaitAll(taskList.ToArray());
        }
        public void Test_ShareDataBetweenThread()
        {
            ThreadsShareInstanceVaraibles t = new ThreadsShareInstanceVaraibles();

            t.WhatIfForgroundThreadEndsBeforeBackgroundThread();
        }
        public void ThreadJoinTest()
        {
            ThreadsShareInstanceVaraibles t = new ThreadsShareInstanceVaraibles();

            t.UsingThreadJoin();
        }
        public void NoThreadWaitCanDieInTheMiddle_SinceMainThreadExit()
        {
            ThreadsShareInstanceVaraibles t = new ThreadsShareInstanceVaraibles();

            t.WhatIfForgroundThreadEndsBeforeBackgroundThread();
        }
        public void CalledFromMainThreadTest()
        {
            ThreadsShareInstanceVaraibles t = new ThreadsShareInstanceVaraibles();

            t.CallMeFromMainThread();
        }