我正在使用WPF(C#.net)创建一些桌面应用程序。我想将其创建为计算机启动应用程序。我可以在启动文件夹中添加快捷方式链接。
我的问题是,我想在计算机启动一分钟后启动此应用程序。如何做到这一点?
答案 0 :(得分:4)
如果您真的想知道互联网连接是否可用,或许最好检查一下,而不是延迟任意时间。
答案 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秒然后执行程序的批处理文件等。然后将该脚本文件放在启动文件夹而不是您的应用程序中。