我正在寻找一种重新启动已被Abort()停止的线程的方法。
public partial class MyProgram : Form
{
private Thread MyThread = new Thread(MyFunction);
private System.Windows.Forms.Button startStopBtn = new System.Windows.Forms.Button();
public MyProgram()
{
MyThread.Start();
startStopBtn += new EventHandler(doStop);
startStopBtn.Text = "Stop";
}
private static void MyFunction()
{
// do something
}
private void doStop(object sender, EventArgs e)
{
MyThread.Abort();
startStopBtn -= new EventHandler(doStop);
startStopBtn += new EventHandler(doStart);
startStopBtn.Text = "Start";
}
private void doStart(object sender, EventArgs e)
{
MyThread.Start(); // << Error returned when clicking the button for 2nd time
startStopBtn -= new EventHandler(doStart);
startStopBtn += new EventHandler(doStop);
startStopBtn.Text = "Stop";
}
}
任何的想法?
最佳答案
在doStart()中调用MyThread.Start()之前,只需添加MyThread = new Thread(MyFunction)。不要在您的方法之外创建线程,该空间被认为是用于声明的。
编辑:请注意,用thread.Abort()杀死线程可能非常危险。您应该尝试完成干净的多线程,就像Groo在他的帖子中描述的那样。