我有以下代码,请有人在下面澄清我的疑问。
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个线程并导致性能问题吗?
答案 0 :(得分:3)
是的,您必须每次都创建一个新线程或将任务提供给线程池,以避免创建一个真正的新线程。你无法重启线程。
但是,我建议如果您的任务连续执行100次,则问题比启动新任务的性能开销要大。
答案 1 :(得分:1)
您不需要在sleep
之后启动线程,线程会自动唤醒。这是同一个线程。
答案 2 :(得分:1)
首先,如果线程已经启动,则无法启动它。在你的例子中,线程已经完成它是工作,这就是它处于终止状态的原因。
您可以使用以下方式查看状态: Thread.ThreadState
答案 3 :(得分:1)
你是否试图在完成5秒之前唤醒线程?在这种情况下,您可以尝试使用Monitor(等待,脉冲等)