さまざまな関数で使用している他の変数(intやstringなど)と同じように、スレッドをグローバルに宣言するだけです。
Thread My_Thread; //goes before your functions/main method
そしてそれを使用します:
private void but_Click(object sender, EventArgs e)
{
My_Thread = new Thread(Send_File);
My_Thread.IsBackground = true;
My_Thread.Start();
}
そしてそれを殺します:
private void Send_File()
{
MyThread.Abort();
}
スレッドで実行されているSend_Fileについて話している場合は、たとえば、を使用して終了しbreak
、すべてのループを停止して完了します。
編集:オースティンサロネンが彼のコメントで述べたように、これはスレッド参照を上書きします。私の提案は、スレッドリストを使用することです。
public List<Thread> ThreadList=new List<Thread>(); //goes before your functions/main method (public for use in other classes)
そしてそれを使用します:
private void but_Click(object sender, EventArgs e)
{
Thread My_Thread = new Thread(Send_File);
My_Thread.IsBackground = true;
My_Thread.Start();
int ThreadIndex = ThreadList.Count; //remember index
ThreadList.Add(My_Thread);
}
スレッドへの参照を再度作成するには、リストのインデックスを覚えておく必要があります。
スレッドを中止するには、そのインデックスを使用するだけです。
ThreadList[ThreadIndex].Abort();
ThreadList[ThreadIndex] = null;
または、スレッドを元に戻します。