【问题标题】:Creating a function to run according to time of day创建一个根据一天中的时间运行的函数
【发布时间】:2016-12-16 13:22:58
【问题描述】:

目前正在用 Visual C# 做一些事情。我现在拥有的是一个从文本框中获取输入的应用程序,当他们点击开始按钮时,程序将运行并获取该信息。我想要做的是检查他们输入的时间并将其与计算机上的当前时间进行比较,并在时钟到达该时间时运行一个函数。这是我一次要运行数周的事情。知道我该怎么做吗?或者也许是最好的方法?如果需要,将提供更多信息。

这是目前的样子: Current Setup

我不确定我是否应该为此使用标准文本框或其他东西。 谢谢!

编辑: 好吧,我最终根本没有用 C# 创建这个程序。我最终编写了一个 1 行批处理文件,该文件利用 Robocopy(内置于 Windows)来验证和复制文件。然后我使用任务计划程序(也内置在 Windows 中)来确保批处理文件在每天的 XX 时间运行。

【问题讨论】:

  • 所以你想在未来编程自动启动,用户可以在哪里输入启动时间?我说对了吗?有什么代码可以显示你已经走了多远?
  • 使用一个计时器,每隔多少秒计时一次,每次计时都会检查当前时间,如果当前时间>输入时间,则运行该过程。
  • 也许创建一个没有窗口检查时间的单独进程。
  • 用图片更新了一下
  • @DylanBeck 更新了我的答案...

标签: c# winforms time timer


【解决方案1】:

您可以按照@Equalsk 的建议使用计时器或使用响应式扩展(它是一个 NuGet 包,请参阅 https://www.nuget.org/packages/System.Reactive/)并执行以下操作:

var dueTime = DateTime.Parse(TextBox1.Text);
Observable.Timer(dueTime).Subscribe(time =>
                {
                    // do something
                });

您应该使用DateTimePicker 而不是TextBox。见https://msdn.microsoft.com/en-us/library/ms229631(v=vs.110).aspx

【讨论】:

  • omg 日期时间选择器!那很完美!谢谢你。有没有办法将日期时间选择器压缩为时间?程序运行的日期并不重要。我只是需要时间。
【解决方案2】:

如果您的任务应该在特定的小时和分钟(而不是秒)运行,您可以将用户输入到 xml 或数据库中的日期和时间写入。然后,同时,应用程序可以每分钟检查 xml/database,如果日期/时间正确,它将执行您的方法。

或者,您可以使用System.Timer 类,当用户输入日期和时间时,计算从当前时间到输入的毫秒数,并启动计时器。当时间过去时,调用你的方法。

Timer 类可以将int32.MaxValue 作为最大间隔,大约为 3 周半

这是一个计时器使用示例(非常基本的示例)

    public Timer MyTimer { get; set; }

    private void button1_Click(object sender, EventArgs e)
    {
        DateTime datetime = DateTime.Parse(textBox1.Text);

        double ms = datetime.Subtract(DateTime.Now).TotalMilliseconds;
        MyTimer = new Timer();
        MyTimer.Interval = (int)ms;

        MyTimer.Tick += T_Tick;
        MyTimer.Start();

    }

    private void T_Tick(object sender, EventArgs e)
    {
        MyTimer.Stop();
        //call your method here
    }

【讨论】:

    猜你喜欢
    • 2012-01-28
    • 2022-01-22
    • 2019-05-23
    • 2011-06-21
    • 2010-11-20
    • 2022-07-05
    • 1970-01-01
    • 2020-01-13
    • 1970-01-01
    相关资源
    最近更新 更多