HOWTO · Csharp

Detener un hilo en C#

En este artículo, explicaré cómo iniciar y detener un hilo en C#.

En esta página

A veces, mientras trabaja con un subproceso en C#, es posible que se encuentre con una situación en la que deba finalizar un subproceso. C# proporciona métodos para que lo haga con éxito, y este artículo tiene como objetivo explicar el proceso de finalización de un subproceso en C#.

Para nuestro objetivo de terminar un hilo, utilizaremos el método Abort(). La ThreadAbortException es lanzada por el método Abort() al subproceso que lo llamó y, como respuesta a esta excepción, el subproceso finaliza.

Antes de que podamos detener un hilo, primero debemos iniciar uno. Para lograr la creación de un hilo, siga los pasos que se indican a continuación.

Utilice el método Abort() para detener un subproceso en C#

Para utilizar los métodos de la biblioteca System.Threading para iniciar y finalizar un hilo, impórtelo.

using System.Threading;

Tendremos que hacer una clase ThreadDemo.

class ThreadDemo {}

Crearemos un método de subproceso llamado threadAssign() dentro de esta clase, con un bucle que itera y genera First Thread cuatro veces.

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

Después de eso, crearemos una nueva clase llamada ThreadExampleMain, que incluye la función principal.

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

Necesitamos realizar las siguientes operaciones para iniciar y detener un hilo dentro del método Main(). Cree e inicialice la variable threadDemo con el tipo de datos ThreadDemo.

ThreadDemo threadDemo = new ThreadDemo();

Usaremos la clase Thread para inicializar una nueva variable y asignarla al hilo que creamos anteriormente.

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

El hilo puede iniciarse invocando la función Start().

thread.Start();

Finalmente, podemos terminar el hilo usando el método Abort() de la biblioteca System.Threading. También imprimiremos "Thread is Abort" para indicar que el hilo ha sido terminado.

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

Código fuente:

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();
    }
  }
}

Producción :

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