wingman007 icon

ThreadingC#

wingman007 | PRO | 11/04/19 05:54:22 PM UTC | 0 ⭐ | 656 👁️ | Never ⏰ | []
C# |

3.29 KB

|

None

|

0 👍

/

0 👎

using System;
using System.Threading;
 
namespace Threding
{
    class Program
    {
        static void Main(string[] args)
        {
            // Paralel code execution
            // https://www.youtube.com/watch?v=Fzckqczmgd0
 
            // synhronous/single threated execution
            //Function1();
            //Function2();
 
            // 1. Foreground threads
            // Paralel/multithreated asynchronous execution
            // forground threads
            // Thread obj1 = new Thread(Function1);
            //  Thread obj2 = new Thread(Function2);
            // start the paralel threads
            // forground threads - even if the main finishes the threads will continue
            // obj1.Start();
            // obj2.Start();
            // here the main app quits but the foreground threads continue
 
            // Background threads will quit if the main app quits
 
            // 2. Background thread
            // By default the thread is forground 
            Thread obj1 = new Thread(Function1);
            // !!! To make it background
            obj1.IsBackground = true; // make it beackground
            obj1.Start();
            Console.WriteLine("The main application has exited");
        }
 
        // For forground thread
        //static void Function1()
        //{
        //    for (int i = 0; i < 10; i++)
        //    {
        //        Console.WriteLine("Function 1 executed " + i.ToString());
        //        // to see the thread execution clearly we wait for 4 s
        //        Thread.Sleep(4000);
        //    }
        //}
 
            // For background thread
        static void Function1()
        {
 
            Console.WriteLine("Function 1 is entered ...");
            Console.ReadLine(); // wait here
            Console.WriteLine("Function 1 is exited ...");
        }
 
        static void Function2()
        {
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine("Function 2 executed " + i.ToString());
                // to see the thread execution clearly we wait for 4 s
                Thread.Sleep(4000);
            }
        }
    }
}
 
/*
 Function 1 executed 0
Function 1 executed 1
Function 1 executed 2
Function 1 executed 3
Function 1 executed 4
Function 1 executed 5
Function 1 executed 6
Function 1 executed 7
Function 1 executed 8
Function 1 executed 9
Function 2 executed 0
Function 2 executed 1
Function 2 executed 2
Function 2 executed 3
Function 2 executed 4
Function 2 executed 5
Function 2 executed 6
Function 2 executed 7
Function 2 executed 8
Function 2 executed 9
 
Paralel execution
Function 2 executed 0
Function 1 executed 0
Function 1 executed 1
Function 2 executed 1
Function 2 executed 2
Function 1 executed 2
Function 2 executed 3
Function 1 executed 3
Function 2 executed 4
Function 1 executed 4
Function 2 executed 5
Function 1 executed 5
Function 2 executed 6
Function 1 executed 6
Function 2 executed 7
Function 1 executed 7
Function 2 executed 8
Function 1 executed 8
Function 1 executed 9
Function 2 executed 9
 
    Function 1 is entered ...
The main application has exited
eww
Function 1 is exited ...
 
    background thread
    The main application has exited
Function 1 is entered ...
     */

Comments