在后台每5分钟执行一次功能

本文关键字:一次 功能 后台 5分钟 执行 | 更新日期: 2023-09-27 17:59:57

我有一个从Web服务中读取数据的函数。有了这些数据,我创建了位图。我将位图发送到面板(显示器),面板显示创建的位图。手动操作就像魅力。我现在需要的是,我的应用程序在Backround中每5分钟自动运行一次这个函数。

我的应用程序正在IIS下运行。我该怎么做?有人能帮我吗?

在后台每5分钟执行一次功能

您不必依赖asp.net项目,但可以使用Cache Callback来完成。我找到了一个很好的方法。实际上我不记得链接了,所以我给你一个我使用的代码:

public abstract class Job
{
    protected Job()
    {
        Run();
    }
    protected abstract void Execute();
    protected abstract TimeSpan Interval { get; }
    private void Callback(string key, object value, CacheItemRemovedReason reason)
    {
        if (reason == CacheItemRemovedReason.Expired)
        {
            Execute();
            Run();
        }
    }
    protected void Run()
    {
        HttpRuntime.Cache.Add(GetType().ToString(), this, null, 
            Cache.NoAbsoluteExpiration, Interval, CacheItemPriority.Normal, Callback);
    }
}
Here is the implementation
public class EmailJob : Job
{
    protected override void Execute()
    {
        // TODO: send email to whole users that are registered 
    }
    protected override TimeSpan Interval
    {
        get { return new TimeSpan(0, 10, 0); }
    }
}

对于这样的任务,Asp.Net应用程序不是正确的框架。

您可能应该为这类任务创建一个专用服务。

另一种选择是创建一个计划任务,每X分钟运行一次

顺便说一句,如果必须通过asp.net应用程序执行此操作,我建议您阅读有关如何使用asp.net模拟Windows服务以运行计划作业

的内容