在C#中经过一段时间后启动一个进程?

时间:2012-09-26 18:00:33

标签: c#

我有一个c#wpf应用程序,在main()方法中,我检查某个条件,如果是,我运行一个不同的进程,但是,我需要在一定的超时后启动进程。所以,例如:

override OnStartUp()

    {
           if(condition == true)
           {
                ProcessStartInfo p = new ProcessStartInfo("filePath");
                p.Start(); // This should wait for like say 5 seconds and then start.
                  return;   // This will exit the current program.
            }
    }

我可以使用Thread.Sleep()但这会导致当前程序也处于睡眠状态。 换句话说,我希望当前程序立即终止,然后在5秒后启动新进程。

谢谢!

这可能吗?

5 个答案:

答案 0 :(得分:4)

如果第一个进程创建第三个程序,该怎么办?第一个程序立即退出,而第三个程序将只是睡5秒,然后将启动第二个程序。

答案 1 :(得分:3)

你有几个选择:

  1. 修改正在启动的进程并将延迟放在那里。您甚至可以等待“父母已经结束”而不是固定的时间。
  2. Windows内置计划任务
  3. 使用sleep命令然后运行程序的批处理文件

答案 2 :(得分:1)

您可以使用任务计划程序API并设置一次性任务,该任务将在接下来的5秒后启动应用程序.Nice managed wrraper:taskscheduler.codeplex.com

答案 3 :(得分:0)

您需要创建一个新线程。在这个帖子中,您可以使用Thread.Sleep而不会阻止您的程序。

public class MyThread
{
   public static void DoIt()
   {
      Thread.Sleep(100);
      // DO what you need here
   }
}
override OnStartUp()
{
    if(condition == true)
    {
       ThreadStart myThread = new MyThread(wt.DoIt);
       Thread myThread = new Thread(myThread);
       myThread.Start();
    }
}

答案 4 :(得分:0)

我可以推荐非常强大的

http://quartznet.sourceforge.net/

满足您的所有日程安排需求。