如何在c#中创建延迟启动应用程序?

我正在使用WPF(C#.net)创建一些桌面应用程序。 我想将其创建为计算机启动应用程序。 我可以添加快捷方式链接到启动文件夹。

我的问题是,我想在计算机启动一分钟后启动这个应用程序。如何做到这一点?

如果你真的想知道互联网连接是否可用,也许最好检查一下,比延迟任意时间更长。

请参阅检查C#是否可以使用Internet连接 。

最简单的解决方案是在应用程序启动时调用Thread.Sleep() 。 正如您在评论中提到的那样,您不希望总是发生延迟 – 只有在计算机首次启动时启动应用程序时才会发生。 为此,代码可以查找命令行参数,该参数指定它作为计算机启动的一部分运行。 如果您看到该命令行参数,则执行睡眠。 否则,你可以马上开始。 当您创建启动文件夹中的快捷方式时,传递一些特殊的令牌….在我的示例中,我使用字符串“startup”。

在App.xaml.cs文件中,您可以输入如下代码:

 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); } } 

这样,您第一个窗口将不会创建60秒。 应用程序仍然立即启动,但实际上没有立即执行任何操作。 如果这对您来说足够好,我认为这将是最好的解决方案。

如果您尝试甚至不启动应用程序60秒(可能是为了避免在内存中加载.exe的开销以及为CLR完成的任何加载),您可以考虑编写一个简单的脚本文件(可能是批处理文件)等等,暂停60秒然后执行你的程序。 然后将该脚本文件放在启动文件夹而不是您的应用程序中。