繁体   English   中英

c#单击按钮停止线程

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM