|
分類:[C#]
お世話になっております。
スレッドの破棄の仕方について質問があります。
スレッドをいくつも作成し、終了時に作成したスレッドをスレッドの終了を待たずに
全て破棄したいと思っています。
下記のようにしたところスレッドを1つ作成した場合は終了時にスレッドの終了を待た
ずにアプリケーションは終了するのですが、スレッドを2つ以上作成した場合はスレッ
ドが終了するまでアプリケーションが終了しません。
作成されているスレッドを全て削除するにはどのように記述すればよいのでしょうか?
ご教授、アドバイス等宜しくお願いします。
(C# VS2005)
--------------------------------------------------
【Form1】
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private ClassThread classThread = new ClassThread();
private void btn_ThreadStart_Click(object sender, EventArgs e)
{
classThread.ControlProcess();
}
private void btn_AppClose_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
classThread.KillThread();
}
}
【スレッドのクラス】
public delegate void ExampleCallback();
public class ClassThread
{
Thread extThread = null;
//スレッド開始
public void ControlProcess()
{
TestThread r = new TestThread(
new ExampleCallback(ResultCallback)
);
extThread = new Thread(new ParameterizedThreadStart(r.ProcessWorker));
extThread.Start();
}
//スレッドの結果を受け取る
public static void ResultCallback()
{
Console.WriteLine("###ResultCallback");
}
//スレッドを破棄する
public void KillThread()
{
extThread.Abort();
}
}
public class TestThread
{
private ExampleCallback callback;
public TestThread(ExampleCallback callbackDelegate)
{
callback = callbackDelegate;
}
public void ProcessWorker(object obj)
{
Thread.Sleep(60000);
callback();
}
}
|