HOWTO · Csharp

How to Stop a Thread in C#

In this article, I'll explain how to start and stop a thread in C#.

On this page

At times, while working with a thread in C#, you might come upon a situation where you will need to terminate a thread. C# does provide methods for you to do that successfully, and this article aims to explain the process of terminating a thread in C#.

For our goal of terminating a thread, we’ll utilize the Abort() method. The ThreadAbortException is thrown by the Abort() method to the thread that called it, and as a response to this exception, the thread is terminated.

Before we can stop a thread, we must first initiate one. To accomplish creating a thread, follow the steps given below.

Use the Abort() Method to Stop a Thread in C#

To utilize the System.Threading library’s methods to start and end a thread, import it.

using System.Threading;

We’ll need to make a ThreadDemo class.

class ThreadDemo {}

We’ll create a thread method named threadAssign() within this class, with a loop that iterates and outputs First Thread four times.

public void threadAssign() {
  for (int threadCount = 0; threadCount < 6; threadCount++) {
    Console.WriteLine("First Thread");
  }
}

After that, we’ll create a new class called ThreadExampleMain, including the main function.

class ThreadExampleMain {
  public static void Main() {}
}

We need to perform the following operations to start and stop a thread inside the Main() method. Create and initialize the variable threadDemo with the datatype ThreadDemo.

ThreadDemo threadDemo = new ThreadDemo();

We’ll use the Thread class to initialize a new variable and assign it to the thread we created earlier.

Thread thread = new Thread(new ThreadStart(threadDemo.threadAssign));

The thread may be started by invoking the Start() function.

thread.Start();

Finally, we may terminate the thread using the System.Threading library’s Abort() method. We’ll also print "Thread is Abort" to indicate that the thread has been terminated.

Console.WriteLine("Thread is abort");
thread.Abort();

Source Code:

using System;
using System.Threading;

class ThreadDemo {
  void threadAssign() {
    for (int threadCount = 0; threadCount < 6; threadCount++) {
      Console.WriteLine("First Thread");
    }
  }
  class ThreadExampleMain {
    public static void Main() {
      ThreadDemo threadDemo = new ThreadDemo();
      Thread thread = new Thread(new ThreadStart(threadDemo.threadAssign));
      thread.Start();
      Console.WriteLine("Thread is abort");
      thread.Abort();
    }
  }
}

Output:

First Thread
First Thread
First Thread
First Thread
First Thread
First Thread
Thread is abort