为了账号安全,请及时绑定邮箱和手机立即绑定

如何在特定时间,在C#中每天调用一个方法?

如何在特定时间,在C#中每天调用一个方法?

C#
米琪卡哇伊 2019-08-02 16:02:32
如何在特定时间,在C#中每天调用一个方法?我已经搜索过了,并找到了关于Quartz.net的答案。但对我的项目来说似乎太大了。我想要一个等价的解决方案,但更简单,(充其量)是在代码中(不需要外部库)。我如何在特定的时间每天调用一个方法?我需要补充一些有关这方面的信息:最简单的(也是丑陋的)方法,就是每秒钟/分钟检查一次时间,并在正确的时间调用该方法。我想要一种更有效的方法来做到这一点,不需要经常检查时间,我可以控制工作是否完成。如果方法失败(由于任何问题),程序应该知道如何写入日志/发送电子邮件。这就是为什么我需要调用一个方法,而不是调度一个作业。我找到了这个解决方案用Java在固定时间调用方法在爪哇。在C#中有类似的方式吗?编辑:我做过这个。我在voidmain()中添加了一个参数,并创建了一个BAT(由WindowsTaskScheduler调度)来使用该参数运行程序。程序运行,完成工作,然后退出。如果一个工作失败,它可以写日志和发送电子邮件。此方法非常适合我的需求:)
查看完整描述

3 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

  • 创建一个控制台应用程序来完成您想要的任务
  • 使用Windows“

    预定任务

    “在需要运行控制台应用程序时执行它的功能。

这才是你真正需要的!

最新情况:如果您想在应用程序中执行此操作,您有以下几种选择:

  • 在.

    Windows窗体

    应用程序,你可以点击

    Application.Idle

    事件,并检查是否达到了一天中调用方法的时间。只有当你的应用程序不忙于其他事情时,才会调用这个方法。快速检查一下你的目标时间是否已经达到,不应该给你的应用程序带来太大的压力,我想.
  • 在ASP.NETWeb应用程序中,有一些方法可以“模拟”发送预定事件-请查看以下内容

    CodeProject文章

  • 当然,您也可以在任何.NET应用程序中简单地“滚动您自己的”-请查看以下内容

    CodeProject文章

    用于示例实现

更新#2如果您想每60分钟检查一次,您可以创建一个计时器,它每60分钟唤醒一次,如果时间到了,它将调用该方法。

就像这样:

using System.Timers;const double interval60Minutes = 60 * 60 * 1000; // milliseconds to one hourTimer checkForTime = new Timer(interval60Minutes);checkForTime.Elapsed += new ElapsedEventHandler(checkForTime_Elapsed);checkForTime.Enabled = true;

然后在事件处理程序中:

void checkForTime_Elapsed(object sender, ElapsedEventArgs e){
    if (timeIsReady())
    {
       SendEmail();
    }}




查看完整回答
反对 回复 2019-08-03
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

每当我构建需要这种功能的应用程序时,始终通过简单的.NET库使用Windows任务计划程序我找到的。

见我对类似问题的回答一些示例代码和更多解释。



查看完整回答
反对 回复 2019-08-03
  • 3 回答
  • 0 关注
  • 974 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信