重新实例化一个线程

时间:2011-04-11 12:17:49

标签: c# .net multithreading

我有以下代码,请有人在下面澄清我的疑问。

public static void Main() {
    Thread thread = new Thread(Display);
    thread.Start();
    Thread.Sleep(5000);     
    // Throws exception, thread is terminated, cannot be restarted. 
    thread.Start() 
}

public static void Display() {

}

似乎为了重新启动线程,我必须再次重新实例化线程。这是否意味着我正在创建一个新线程?如果我继续创建100次重新填充,它会创建100个线程并导致性能问题吗?

4 个答案:

答案 0 :(得分:3)

是的,您必须每次都创建一个新线程或将任务提供给线程池,以避免创建一个真正的新线程。你无法重启线程。

但是,我建议如果您的任务连续执行100次,则问题比启动新任务的性能开销要大。

答案 1 :(得分:1)

您不需要在sleep之后启动线程,线程会自动唤醒。这是同一个线程。

答案 2 :(得分:1)

首先,如果线程已经启动,则无法启动它。在你的例子中,线程已经完成它是工作,这就是它处于终止状态的原因。

您可以使用以下方式查看状态:     Thread.ThreadState

答案 3 :(得分:1)

你是否试图在完成5秒之前唤醒线程?在这种情况下,您可以尝试使用Monitor(等待,脉冲等)