Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c#中创建延迟启动应用程序?_C# - Fatal编程技术网

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

如何在c#中创建延迟启动应用程序?,c#,C#,我正在使用WPF(C#.net)创建一些桌面应用程序。我想将其创建为计算机启动应用程序。我可以添加快捷链接到启动文件夹 我的问题是,我想在计算机启动一分钟后启动此应用程序。如何启动此应用程序?最简单的解决方案是在应用程序启动时调用。正如您在评论中提到的,您不希望延迟总是发生——只有在计算机首次启动时启动应用程序时才会发生。为了实现这一点,代码可以查找命令行参数,该参数指定它作为计算机启动的一部分运行。如果看到该命令行参数,则执行睡眠。否则,您可以立即开始。当您创建进入启动文件夹的快捷方式时,传递

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


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

最简单的解决方案是在应用程序启动时调用。正如您在评论中提到的,您不希望延迟总是发生——只有在计算机首次启动时启动应用程序时才会发生。为了实现这一点,代码可以查找命令行参数,该参数指定它作为计算机启动的一部分运行。如果看到该命令行参数,则执行睡眠。否则,您可以立即开始。当您创建进入启动文件夹的快捷方式时,传递一些特殊的令牌……在我的示例中,我使用字符串“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秒,然后执行你的程序。然后将脚本文件放在启动文件夹中,而不是应用程序中。

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


请参阅。

我认为在代码中添加延迟机制不会给您带来多大好处。任何.NET应用程序仍然需要等待程序、框架和其他依赖项加载到内存中才能开始。它最终可能会减慢启动时间,这还不包括实际运行代码。您最好编写一个脚本在延迟后启动应用程序,或者在延迟启动后使用任务调度程序执行程序。谢谢您的评论。我的应用程序在连接到internet时运行。所以我想在计算机上运行大约一分钟后运行我的应用程序。您能帮助我吗?所以延迟的目标是等到您有一个工作的internet连接,而不是在启动时在合理的时间内加载?在这种情况下,在真正启动代码之前,只进行轮询循环并尝试连接到某个已知的internet服务器可能会更容易。如果可以连接,则可以继续使用代码,否则请重试,直到可以连接为止(如果需要,请在一定时间后退出)。如果您不想这样做,那么我的建议是使用脚本或任务调度程序将是您的最佳选择。您的应用程序需要能够适应连接不可用的情况。等待任意数量的时间以排除连接可用的可能性是错误的解决方案。立即启动并使您的应用程序能够适应连接中断。谢谢您的回复。但我想在只有计算机启动时在我的应用程序中延迟运行。其他时间不应拖延。所以这个解决方案对我不好。因为每次从这个解决方案中延迟1分钟。你能帮我吗?哦,我没有考虑过。但只在应用程序从启动文件夹中的快捷方式启动时进行延迟是很容易的。我编辑了我的答案来解决这个问题。