Я знаю, что этот вопрос немного устарел, но я подумал, что опубликую ответ, если сюда придут другие.
Для этого примера кода, если он был изменен, чтобы он выглядел так:
Thread m_MyThread;
private void HandleMyThread()
{
while (true)
{
Thread.Sleep(5000);
return;
}
}
private void button1_Click(object sender, EventArgs e)
{
if (!m_MyThread.IsAlive)
{
m_MyThread = new Thread(HandleMyThread);
m_MyThread.IsBackground = true;
m_MyThread.Start();
}
}
Это создаст новый экземпляр потока и запустит его.Ошибка ThreadStateException
заключается в том, что вы просто не можете перезапустить поток, который находится в остановленном состоянии.m_MyThread.Start()
действительно только для потоков в состоянии Unstarted
.В таких случаях необходимо создать новый экземпляр потока и вызвать Start()
для нового экземпляра.