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

时间:2011-09-16 10:48:36

标签: c#

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

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

2 个答案:

答案 0 :(得分:4)

如果您真的想知道互联网连接是否可用,或许最好检查一下,而不是延迟任意时间。

请参阅check whether Internet connection is available with C#

答案 1 :(得分:3)

最简单的解决方案是在应用程序启动时拨打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秒然后执行程序的批处理文件等。然后将该脚本文件放在启动文件夹而不是您的应用程序中。