我有从Web服务中读取数据的函数。使用该数据我创建位图。我将位图发送到面板(显示器),显示创建的位图。手动它的工作就像魅力一样。我现在需要的是,我的应用程序在Backround中每5分钟自动运行此功能。
我的应用程序在IIS下运行。我怎样才能做到这一点?有人可以帮我吗?
答案 0 :(得分:4)
Asp.Net应用程序不是这样的任务的正确框架。
您应该为此类任务创建dedicated service。
另一种选择是创建一个每X分钟运行一次的scheduled task
另外,如果您 必须 通过您的asp.net应用程序执行此操作,我建议您阅读如何Simulate a Windows Service using ASP.NET to run scheduled jobs
答案 1 :(得分:2)
您不必依赖于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); }
}
}