【问题标题】:How to create delay startup application in c#?如何在 C# 中创建延迟启动应用程序?
【发布时间】:2019-02-11 19:25:38
【问题描述】:

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

我的问题是,我想在电脑启动一分钟后启动这个应用程序。这个怎么做?

【问题讨论】:

  • 我认为在代码中添加延迟机制不会给您带来太多好处。任何 .NET 应用程序仍然需要等待程序、框架和其他依赖项加载到内存中才能开始。它最终可能会减慢启动时间,这还不包括实际运行您的代码。您最好编写一个脚本以在延迟后启动您的应用程序,或者在延迟启动后使用任务调度程序来执行您的程序。
  • 感谢您的评论。我的应用程序在连接互联网时运行。所以我想在计算机上运行大约一分钟后运行我的应用程序。你能帮我吗?
  • 所以延迟的目的是等到你有一个工作的互联网连接,而不是在启动时在合理的时间内加载?在这种情况下,只有一个轮询循环并在真正启动您的代码之前尝试连接到某个已知的互联网服务器可能会更容易。如果您可以连接,那么您可以继续使用您的代码,否则重试直到可以(如有必要,在一定时间后退出)。如果您不想这样做,那么我建议您使用脚本或任务调度程序将是您的最佳选择。
  • 您的应用需要能够适应不可用的连接。在连接可用的情况下等待任意时间是错误的解决方案。立即启动,让您的应用能够适应连接中断。

标签: c#


【解决方案1】:

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

check whether Internet connection is available with C#

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 感谢您的回复。但是我想在只有计算机启动时在我的应用程序中延迟运行。其他时间不宜耽误。所以这个解决方案对我不利。因为每次从这个解决方案延迟 1 分钟。你能帮帮我吗?
    • 哦,我没有考虑到这一点。但是,仅在从 Startup 文件夹中的快捷方式启动应用程序时才进行延迟是很容易的。我已经编辑了我的答案来解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    • 2019-02-21
    • 2021-12-01
    • 1970-01-01
    相关资源
    最近更新 更多