3

我有从 Web 服务中读取数据的功能。使用该数据我创建位图。我将位图发送到显示创建的位图的面板(显示器)。手动让它像魅力一样工作。我现在需要的是,我的应用程序在后台每 5 分钟自动运行一次此功能。

我的应用程序在 IIS 下运行。我怎样才能做到这一点?有人可以帮我吗?

4

2 回答 2

3

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

您可能应该为此类任务创建专用服务。

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

附带说明一下,如果您必须通过您的 asp.net 应用程序执行此操作,我建议您阅读如何使用 ASP.NET 模拟 Windows 服务以运行计划作业

于 2013-02-19T08:11:25.750 回答
3

您不必依赖于 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); }
    }
}
于 2013-02-19T08:44:19.193 回答