Я ищу способ, чтобы перезапустить поток, который был остановлен Abort() ..Перезапуск поток в .NET (с использованием C#)
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";
}
}
Любая идея?
Этот ответ скорее обходным решением, чем реальным ответом. даже не объясняю, почему он ошибается. У меня получилось правильно. – Trap
Вы правы, но когда я был новичком в программировании, у меня было несколько подобных проблем. Я читал много решений, подобных этому из groo, и да, вы совершенно правы, мое решение - всего лишь обходное решение. Но механизмы, которые описывают groo, были слишком сложны для меня, чтобы понять в моем программировании-newb раз. Так что, я бы мог лучше дать простой «ответ» (или обходной путь) для программиста, который не так опытен. – Emiswelt
Это то, что делает плохих программистов. Они не вкладывают достаточно времени, чтобы понять, что они делают. o собирается очистить ваш Thread.Abort беспорядок, когда вы ушли? –