[英]c# Stop Thread with a button click
如何通过单击按钮结束线程? 我通过单击按钮开始线程。
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();
}
SampleFunction
是一个方法,而不是Thread
对象,因此您不能像这样调用Abort()
。
您需要保留对Thread
的引用:
var thread = new Thread(SampleFunction);
thread.Start();
然后,当您想杀死它时,可以调用Abort()
:
thread.Abort();
但是请记住,它确实可以杀死它。 Abort()
的作用是它在线程中引发ThreadAbortException
。 因此它可以随时停止并使事情保持意外状态,因此根据您在线程中的操作,它可能不是最佳方法。
这是几篇文章,讨论了这一点以及可能更好的停止线程的方法:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.