C# 延迟重启应用程序

C# 延迟重启应用程序,c#,winforms,C#,Winforms,我想重新启动我的应用程序。使用Application.Restart()可以正常工作 但我想在这种情况下增加时间延迟,因为它会非常快速地重新启动应用程序,并且我希望重新启动应用程序需要时间 private void lbllaunch_Click(object sender, EventArgs e) { Application.Restart(); } 您可以在添加延迟的方法中添加Thread.Sleep您可以在添加延迟的方法中添加Thread.Sleep,因为我只是假设您根据示例代

我想重新启动我的应用程序。使用
Application.Restart()可以正常工作
但我想在这种情况下增加时间延迟,因为它会非常快速地重新启动应用程序,并且我希望重新启动应用程序需要时间

private void lbllaunch_Click(object sender, EventArgs e)
{
    Application.Restart();
}

您可以在添加延迟的方法中添加
Thread.Sleep
您可以在添加延迟的方法中添加
Thread.Sleep
,因为我只是假设您根据示例代码的语法使用windows窗体,
Thread.Sleep('time')
应该可以帮您解决这个问题。 如果要使窗口消失,然后在延迟后重新启动,可以尝试使用
Form1.Visible=false
,然后在应用程序中使用Sleep方法。restart方法,或将这些方法包括到帮助器函数中,如:

void restartApplication(Form form1)
{
   form1.Visible = false;
   Thread.Sleep(300);
   Application.restart();
}
然后将窗体再次设置为可见。这个解决方案不是很简单

我建议使用多线程。您可以设置另一个线程,关闭应用程序,暂停然后重新启动它。这不会让您的主应用程序处于打开但不工作的奇怪状态


因为我只是根据示例代码的语法假设您正在使用windows窗体,
Thread.Sleep('time')
应该可以帮您解决这个问题。 如果要使窗口消失,然后在延迟后重新启动,可以尝试使用
Form1.Visible=false
,然后在应用程序中使用Sleep方法。restart方法,或将这些方法包括到帮助器函数中,如:

void restartApplication(Form form1)
{
   form1.Visible = false;
   Thread.Sleep(300);
   Application.restart();
}
然后将窗体再次设置为可见。这个解决方案不是很简单

我建议使用多线程。您可以设置另一个线程,关闭应用程序,暂停然后重新启动它。这不会让您的主应用程序处于打开但不工作的奇怪状态


这是正确的使用方法吗??private void lbllunch_Click(object sender,EventArgs e){Application.Restart();Thread.Sleep(5000)}重新启动应用程序时不要延迟。它会使应用程序停止工作一段时间,而不是重新启动。我不需要关闭应用程序并花时间重新启动它。如果需要,请在主方法的Program.cs中,在
Application.Run(newform1())之前调用如果您确实想退出主线程,然后等待一段时间并启动应用程序,则需要一些外部进程来接管控制。您可以启动一些脚本或启动另一个程序,然后退出程序。启动另一个进程而不是作为应用程序的子进程可能会有一些困难。但它应该是可行的,这是正确的使用方法吗??private void lbllunch_Click(object sender,EventArgs e){Application.Restart();Thread.Sleep(5000)}重新启动应用程序时不要延迟。它会使应用程序停止工作一段时间,而不是重新启动。我不需要关闭应用程序并花时间重新启动它。如果需要,请在主方法的Program.cs中,在
Application.Run(newform1())之前调用如果您确实想退出主线程,然后等待一段时间并启动应用程序,则需要一些外部进程来接管控制。您可以启动一些脚本或启动另一个程序,然后退出程序。启动另一个进程而不是作为应用程序的子进程可能会有一些困难。但它应该是可行的,您可以使用Thread.Sleep(3)或Task.Delay(3)。3只是采样时间。您可以使用Thread.Sleep(3)或Task.Delay(3)。3只是样本时间。很好的答案,怎么不需要假设,看看这个问题tags@hessamhedieh是的,我错过了;)我猜另一个
线程
是指另一个
进程
,对吗?@hessamhedieh好吧,它被称为
线程
(请参阅我答案中的链接),但基本上它所做的是创建另一个程序实例,该程序执行它自己的东西(模糊的描述)因此,一个线程运行应用程序,另一个线程处理重启。这使您能够获得延迟,而不会实际使应用程序线程无法执行任何操作,在暂停期间,应用程序线程看起来会崩溃,因为只有后台的另一个线程会停止等待timenice的答案,但不需要假设,只需看问题即可tags@hessamhedieh是的,我错过了;)我猜另一个
线程
是指另一个
进程
,对吗?@hessamhedieh好吧,它被称为
线程
(请参阅我答案中的链接),但基本上它所做的是创建另一个程序实例,该程序执行它自己的东西(模糊的描述)因此,一个线程运行应用程序,另一个线程处理重启。这使您能够获得延迟,而不会实际使应用程序线程无法执行任何操作,这在暂停期间看起来会崩溃,因为此时只有后台的另一个线程停止