如何通过单击按钮结束线程?我通过单击按钮开始线程。
new Thread(SampleFunction).Start();
和我的线程:
void SampleFunction()
{
int i = 0;
while (true)
{
string Seconds = DateTime.Now.ToString("ss");
if (Seconds == "00")
{
int i2 = i++;
string myString = i2.ToString();
AppendTextBox(myString);
Thread.Sleep(2000);
}
}
}
public void AppendTextBox(string value)
{
if (InvokeRequired)
{
this.Invoke(new Action<string>(AppendTextBox), new object[] { value });
return;
}
textBox4.Text += value;
}
我如何取消它?以下内容不起作用:
private void button8_Click(object sender, EventArgs e)
{
SampleFunction.Abort();
}
答案 0 :(得分:4)
SampleFunction
是一种方法,而不是Thread
对象,因此您不能像这样调用Abort()
。
您需要保留对Thread
的引用:
var thread = new Thread(SampleFunction);
thread.Start();
然后,当您想杀死Abort()
时,可以呼叫它:
thread.Abort();
但是请记住,它确实可以杀死。 Abort()
的作用是在线程中抛出ThreadAbortException
。因此它可以随时停止,并使事情保持意外状态,因此,根据您在线程中的操作,它可能不是最佳方法。
这里有几篇文章讨论了这一点以及可能更好的停止线程的方法: