[ VB.NET / C# ] スレッドの終了を待ち合わせる ( Thread.Join )

Pocket

Thread.Join メソッドを使用して、メインスレッドで作成(起動)したスレッドの終了を待ち合わせるサンプルコードを掲載しています。詳細は、コメントを参照ください。

スポンサーリンク

VB

Imports System.Threading

Class Test

    Public Shared Sub Main()

        ' スレッドの作成
        Dim t As New Thread(New ThreadStart(AddressOf TestThread))

        t.Start() ' スレッドの開始

        ' メインスレッドが終了した場合に、動作中のスレッドも終了させる場合
        't.IsBackground = True

        ' スレッドの優先度の変更
        't.Priority = ThreadPriority.AboveNormal

        ' スレッドの強制終了させる場合
        't.Abort()
        
        Console.WriteLine("wait thread.")

        ' スレッドの終了を待ち合わせる 
        t.Join()

        Console.WriteLine("join thread")

        Console.ReadKey()

    End Sub

    '''<summary>
    ''' スレッドとして動作するメソッド
    ''' </summary>
    Private Shared Sub TestThread()

        Console.WriteLine("sleep...")

        ' 3秒間停止
        Thread.Sleep(3000)

        Console.WriteLine("wake up. thread end.")

    End Sub
    
End Class

C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Threading;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            // スレッドの作成
            Thread t = new Thread(new ThreadStart(TestThread));

            t.Start(); // スレッドの開始

            // メインスレッドが終了した場合に、動作中のスレッドも終了させる場合
            //t.IsBackground = True

            // スレッドの優先度の変更
            //t.Priority = ThreadPriority.Lowest;

            // スレッドの強制終了させる場合
            //t.Abort();

            Console.WriteLine("wait thread.");

            // スレッドの終了を待ち合わせる 
            t.Join();

            Console.WriteLine("join thread");
            Console.ReadKey();
        }

        ///<summary>
        /// スレッドとして動作するメソッド
        /// </summary>
        static void TestThread()
        {
            Console.WriteLine("sleep...");

            // 3秒間停止
            Thread.Sleep(3000);

            Console.WriteLine("wake up. thread end.");
        }
    }
}
参考

 

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *