gpt4 book ai didi

c# - 如何通过主线程的名称挂起一个线程?

转载 作者:行者123 更新时间:2023-11-30 17:21:19 25 4
gpt4 key购买 nike

我有一个本地线程,它是在主线程的按钮单击事件上启动的。它的名字是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com