【发布时间】:2018-04-11 16:45:22
【问题描述】:
我已经查看了该主题的所有解决方案,但似乎仍然无法在不使用 Thread.Abort() 的情况下完成线程的停止。 下面是代码:创建线程的主类代码:
_pollingThread = new Thread(pollingThread);
_pollingThread.Start();
这里是线程:
void _pollingThread()
{
while (continuePolling) //initially set to true
{
//do some things can take about 200ms to run
}
}
我接下来尝试通过将 continuePolling 设置为 false 来从主线程中停止线程。
private void form1_FormClosing(object sender, FormClosingEventArgs e)
{
continuePolling = false;
Thread.Sleep(1000);
_pollingThread.Join(1000);
if (_pollingThread.IsAlive) //always alive!
{
_pollingThread.Abort;
}
}
谁能告诉我我做错了什么? 谢谢
【问题讨论】:
-
continuePolling在哪里以及如何定义?我认为您提供的代码不足以复制您遇到的问题。 -
不要中止线程,使用同步原语告诉它离开。
-
或使用thread.interupt
-
thread.Join 等待线程完成。你会挂在那里。您需要通过将 continuePolling 设置为 false 来告诉您的线程停止
-
@pm100 只在你不期望的时候使用异常
标签: c# multithreading winforms