我有一个本地线程,它是在主线程的按钮单击事件上启动的。它的名字是RegistrationThread
。我想在另一个停止按钮单击事件上停止此线程。
我该如何停止RegistrationThread
这是一个本地线程,我无法通过其名称访问该线程?
如果我得到RegistrationThread
,那么可以暂停吗?这个怎么做?
中止线程通常是最后的手段。原因是因为它会导致很多意想不到的副作用。最佳实践是允许工作线程在预定的安全点优雅地结束。这可以通过许多不同的方式正确完成。最简单的方法之一是设置一个标志,指示工作线程应该开始关闭。
public class YourForm : Form
{
private volatile bool m_Stop = false;
private void StartButton_Click(object sender, EventArgs e)
{
var thread = new Thread(
() =>
{
while (...)
{
// Periodically poll the m_Stop flag.
if (m_Stop)
{
break;
}
}
});
thread.Start();
}
private void StopButton_Click(object sender, EventArgs e)
{
m_Stop = true;
}
}
If you really想要中止一个线程那么你总是可以保存对Thread
然后打电话Abort
从你的停止按钮点击事件开始。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)