作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个本地线程,它是在主线程的按钮单击事件上启动的。它的名字是 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;
}
}
如果您真的想要中止一个线程,那么您总是可以保存对Thread
的引用,然后在其上调用Abort
你的停止按钮点击事件。
关于c# - 如何通过主线程的名称挂起一个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3575172/
有人可以向我澄清主线 DHT 规范中的声明吗? Upon inserting the first node into its routing table and when starting up th
我正在尝试使用 USB 小工具驱动程序使嵌入式设备作为 MTP 设备工作。 我知道 Android 从大容量存储设备切换到 MTP 设备已经有一段时间了,并且找到了 source code for M
我是一名优秀的程序员,十分优秀!