在后台每5分钟执行一次功能
本文关键字:一次 功能 后台 5分钟 执行 | 更新日期: 2023-09-27 17:59:57
我有一个从Web服务中读取数据的函数。有了这些数据,我创建了位图。我将位图发送到面板(显示器),面板显示创建的位图。手动操作就像魅力。我现在需要的是,我的应用程序在Backround中每5分钟自动运行一次这个函数。
我的应用程序正在IIS下运行。我该怎么做?有人能帮我吗?
您不必依赖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服务以运行计划作业