我运行的线程是这样的:
实例变量
private Thread workerThread = null;在建筑商中
workerThread = new Thread(new ThreadStart(this.remoteRequestBackgroundTask));在一个方法中,我启动了线程
private void btnTransferData_Click(object sender, EventArgs e)
{
////Start the thread
workerThread.Start();
//remoteRequestBackgroundTask();
}remoteRequestBackgroundTask
private void remoteRequestBackgroundTask()
{
//does some background processing and then finishes
}这在我第一次运行线程时是有效的,但是,当它运行完并且我再次运行它时,我得到"System.Threading.ThreadStateException“。我该如何解决这个问题呢?
发布于 2011-03-21 08:09:30
不要在构造函数中创建工作线程。您应该将此代码移到btnTransferData_Click方法中。
发布于 2011-03-21 08:09:49
您确定每次调用btnTransferData_Click时都会创建一个新的线程吗(如在中所示,不会为同一实例调用两次单击)?
看一看here,这似乎是因为在线程已经执行之后再次调用它时可能会导致这种情况。在Click方法中(而不是在构造函数中)创建线程以避免这种情况。
发布于 2011-03-21 08:15:57
是的,线程已经执行了。你不能“重启”它。对于本例,解决方案是创建一个新线程并运行该线程。
https://stackoverflow.com/questions/5372542
复制相似问题