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."); } } }
参考