Reputation: 2273
I have a c# wpf application where in the main() method, I check for a certain condition and if it is true, I run a different process, however, I need to start the process after a certain timeout. So, for eg:
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.
}
}
I could use Thread.Sleep() but that will cause the current program to sleep as well. So, in other words, I want the current program to terminate immediately and then new process to start after 5 seconds.
Thanks!
Is this possible?
Upvotes: 4
Views: 2306
Reputation: 1905
I can recomend the very powerful
http://quartznet.sourceforge.net/
For all your scheduling needs.
Upvotes: 0
Reputation: 1940
You can use Task Scheduler api and setup one time task that will start app after next 5 seconds.Nice managed wrraper: taskscheduler.codeplex.com
Upvotes: 1
Reputation: 2232
You need to create a new Thread. In this thread you can use Thread.Sleep without blocking your program.
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();
}
}
Upvotes: 0
Reputation: 373
What if the first process creates a third program. The first program exits immediately, whilst the third one will simply sleep for 5 seconds and then will start your second program.
Upvotes: 4
Reputation: 283614
You've got a few options:
Upvotes: 3