C# でスレッドを停止する

Saad Aslam 2023年10月12日
C# でスレッドを停止する

場合によっては、C# でスレッドを操作しているときに、スレッドを終了する必要がある状況に遭遇することがあります。C# は、それを正常に実行するためのメソッドを提供します。この記事は、C# でスレッドを終了するプロセスを説明することを目的としています。

スレッドを終了するという目標のために、Abort() メソッドを利用します。ThreadAbortException は、Abort() メソッドによってそれを呼び出したスレッドにスローされ、この例外への応答として、スレッドは終了します。

スレッドを停止する前に、まずスレッドを開始する必要があります。スレッドの作成を完了するには、以下の手順に従います。

C#Abort() メソッドを使用してスレッドを停止する

System.Threading ライブラリのメソッドを利用してスレッドを開始および終了するには、スレッドをインポートします。

using System.Threading;

ThreadDemo クラスを作成する必要があります。

class ThreadDemo {}

このクラス内に threadAssign() という名前のスレッドメソッドを作成し、First Thread を 4 回繰り返して出力するループを作成します。

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

その後、main 関数を含む ThreadExampleMain という新しいクラスを作成します。

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

Main() メソッド内でスレッドを開始および停止するには、次の操作を実行する必要があります。変数 threadDemo をデータ型 ThreadDemo で作成して初期化します。

ThreadDemo threadDemo = new ThreadDemo();

Thread クラスを使用して新しい変数を初期化し、それを前に作成したスレッドに割り当てます。

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

スレッドは、Start() 関数を呼び出すことで開始できます。

thread.Start();

最後に、System.Threading ライブラリの Abort() メソッドを使用してスレッドを終了できます。また、スレッドが終了したことを示すために、"Thread is Abort"を出力します。

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

ソースコード:

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

出力:

First Thread
First Thread
First Thread
First Thread
First Thread
First Thread
Thread is abort
著者: 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

関連記事 - Csharp Thread