Multithreading in C#
Mar 27, 2019 02:00 0 Comments C# (C-Sharp) GANESH MALLA

                                        Multithreading in C#

thread is defined as the execution path of a program. Each thread defines a unique flow of control. If your application involves complicated and time-consuming operations, then it is often helpful to set different execution paths or threads, with each thread performing a particular job.

Threads are lightweight processes. One common example of use of thread is implementation of concurrent programming by modern operating systems. Use of threads saves wastage of CPU cycle and increase efficiency of an application.

A simple program is one where a single thread runs as a single process which is the running instance of the application. However, this way the application can perform one job at a time. To make it execute more than one task at a time, it could be divided into smaller threads.


Thread Life Cycle

The life cycle of a thread starts when an object of the System.Threading.Thread class is created and ends when the thread is terminated or completes execution.

Following are the various states in the life cycle of a thread −

·        The Unstarted State − It is the situation when the instance of the thread is created but the Start method is not called.

·        The Ready State − It is the situation when the thread is ready to run and waiting CPU cycle.

·        The Not Runnable State − A thread is not executable, when

    • Sleep method has been called
    • Wait method has been called
    • Blocked by I/O operations

·        The Dead State − It is the situation when the thread completes execution or is aborted.


The Main Thread

In C#, the System.Threading.Thread class is used for working with threads. It allows creating and accessing individual threads in a multithreaded application. The first thread to be executed in a process is called the main thread.

When a C# program starts execution, the main thread is automatically created. The threads created using the Thread class are called the child threads of the main thread. You can access a thread using the CurrentThread property of the Thread class.

The following program demonstrates main thread execution −

using System;

using System.Threading;

 namespace MultithreadingApplication {

   class MainThreadProgram {

      static void Main(string[] args) {

         Thread th = Thread.CurrentThread;

         th.Name = "MainThread";

         Console.WriteLine("This is {0}", th.Name);





When the above code is compiled and executed, it produces the following result −

This is MainThread

Properties and Methods of the Thread Class

The following table shows some most commonly used properties of the Thread class −


Property & Description



Gets the current context in which the thread is executing.



Gets or sets the culture for the current thread.



Gets or sets the thread's current principal (for role-based security).



Gets the currently running thread.



Gets or sets the current culture used by the Resource Manager to look up culture-specific resources at run-time.



Gets an ExecutionContext object that contains information about the various contexts of the current thread.



Gets a value indicating the execution status of the current thread.



Gets or sets a value indicating whether or not a thread is a background thread.



Prev Next
About the Author
Topic Replies (0)
Leave a Reply
Guest User

You might also like

Not sure what course is right for you?

Choose the right course for you.
Get the help of our experts and find a course that best suits your needs.

Let`s Connect