C# supports parallel execution of code through multithreading. A thread is an independent execution path, able to run simultaneously with other threads.

A C# client program (Console, WPF, or Windows Forms) starts in a single thread created automatically by the CLR and operating system (the “main” thread), and is made multithreaded by creating additional threads.


using System.Threading


static void PrintHelloFromThreadName() 
        {
            Console.WriteLine("Hello, from thread {0}", 
                Thread.CurrentThread.Name); // {0} 
        } 

        public void ThreadStart() 
        {
            PrintHelloFromThreadName(); 
        } 

        static void Main(string[] args) 
        {
            Thread.CurrentThread.Name = "Main thread"; 
            Class1 obj = new Class1(); 
            Thread thread = new Thread(
                new ThreadStart(obj.ThreadStart)); 
            thread.Name = "Forked thread"; 
            thread.Start(); 
            PrintHelloFromThreadName(); 
        }