Detener un hilo en C#

Saad Aslam 12 octubre 2023
Detener un hilo en C#

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
Autor: Saad Aslam
Saad Aslam avatar Saad Aslam avatar

I'm a Flutter application developer with 1 year of professional experience in the field. I've created applications for both, android and iOS using AWS and Firebase, as the backend. I've written articles relating to the theoretical and problem-solving aspects of C, C++, and C#. I'm currently enrolled in an undergraduate program for Information Technology.

LinkedIn

Artículo relacionado - Csharp Thread