Attendi la fine di un thread in C#

Muhammad Maisam Abbas 16 febbraio 2024
  1. Attendi la fine di un thread con il metodo Task.WaitAll() in C#
  2. Attendi la fine di un thread con il metodo Thread.Join() in C#
Attendi la fine di un thread in C#

Questo tutorial discuterà i metodi di attesa del completamento di un thread in C#.

Attendi la fine di un thread con il metodo Task.WaitAll() in C#

Il metodo Task.WaitAll() in C# viene utilizzato per attendere il completamento di tutti gli oggetti della classe Task. La classe Task rappresenta un’attività asincrona in C#. Possiamo avviare i thread con la classe Task e attendere che i thread finiscano con il metodo Task.WaitAll() in C#.

using System;
using System.Threading.Tasks;

namespace wait_for_thread {
  class Program {
    static void fun1() {
      for (int i = 0; i < 2; i++) {
        Console.WriteLine("Thread 1");
      }
    }
    static void fun2() {
      for (int i = 0; i < 2; i++) {
        Console.WriteLine("Thread 2");
      }
    }
    static void Main(string[] args) {
      Task thread1 = Task.Factory.StartNew(() => fun1());
      Task thread2 = Task.Factory.StartNew(() => fun2());
      Task.WaitAll(thread1, thread2);
      Console.WriteLine("The End");
    }
  }
}

Produzione:

Thread 1 Thread 1 Thread 2 Thread 2 The End

Nel codice sopra, abbiamo aspettato il completamento delle attività thread1 e thread2 all’interno del thread principale con il metodo Task.WaitAll() in C#.

Attendi la fine di un thread con il metodo Thread.Join() in C#

Nella sezione precedente, abbiamo discusso di come possiamo aspettare un thread con il metodo Task.WaitAll() in C#. Possiamo anche raggiungere lo stesso obiettivo con il metodo Thread.Join() in C#. Il Thread.Join() metodo interrompe l’esecuzione del thread chiamante fino a quando il thread corrente non completa la sua esecuzione. Il seguente esempio di codice ci mostra come aspettare che un thread completi la sua esecuzione con il metodo Thread.Join() in C#.

using System;
using System.Threading.Tasks;

namespace wait_for_thread {
  class Program {
    static void fun1() {
      for (int i = 0; i < 2; i++) {
        Console.WriteLine("Thread 1");
      }
    }
    static void fun2() {
      for (int i = 0; i < 2; i++) {
        Console.WriteLine("Thread 2");
      }
    }
    static void Main(string[] args) {
      Thread thread1 = new Thread(new ThreadStart(fun1));
      Thread thread2 = new Thread(new ThreadStart(fun2));

      thread1.Start();
      thread1.Join();
      thread2.Start();
      thread2.Join();
      Console.WriteLine("The End");
    }
  }
}

Produzione:

Thread 1 Thread 1 Thread 2 Thread 2 The End

Nel codice precedente, abbiamo aspettato che i thread thread1 e thread2 finissero all’interno del thread principale con il metodo Thread.Join() in C#.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Articolo correlato - Csharp Thread