The easiest solution would be to put a call to Thread.Sleep()
when your application starts up. As you mentioned in a comment, you don't want the delay to always happen - only when the application is launched when the computer first starts. To accomplish this, the code can look for a command line argument that specifies that it's running as part of the computer starting. If you see that command line argument, you do the sleep. Otherwise, you can just start right away. When you make the shortcut that goes in the Startup folder, pass some special token....in my example, I use the string "startup".
In your App.xaml.cs file, you can put code like this:
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
//If a command line argument was passed and it was some special string,
// then we want to do the sleep. Otherwise, we don't sleep and just
// continue on right away.
if (e.Args.Length == 1 && e.Args[0] == "startup")
{
//Sleep for 60 seconds
System.Threading.Thread.Sleep(60 * 1000);
}
//Continue on...
base.OnStartup(e);
}
}
That way, you first window won't be created for 60 seconds. The application still starts right away but effectively doesn't do anything right away. If that is good enough for you, I think this would be the best solution.
If you're trying to not even launch your application for 60 seconds (perhaps to avoid the overhead of loading your .exe in memory plus whatever loading is done for the CLR), you could consider writing a simple script file (perhaps a batch file, etc.) that pauses for 60 seconds and then executes your program. Then put that script file in the startup folder instead of your application.