Thread.Join メソッドを使用して、メインスレッドで作成(起動)したスレッドの終了を待ち合わせるサンプルコードを掲載しています。詳細は、コメントを参照ください。
スポンサーリンク
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.");
}
}
}
参考