我有从Webservice中读取Data的函数。有了这个数据,我创建了位图。我将位图发送到显示创建的位图的面板(显示器)。手工工作就像魅力。我现在需要的是,我的应用程序每5分钟在Backround中自动运行此功能。在后台每5分钟执行一次函数
我的应用程序正在IIS下运行。我怎样才能做到这一点?有人可以帮助我吗?
我有从Webservice中读取Data的函数。有了这个数据,我创建了位图。我将位图发送到显示创建的位图的面板(显示器)。手工工作就像魅力。我现在需要的是,我的应用程序每5分钟在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应用程序不是这样的任务的正确框架。
您应该为此类任务创建一个dedicated service。
另一种选择是创建一个scheduled task将运行每隔X分钟
在一个侧面说明,如果你必须做到这一点通过你的asp.net应用程序,我建议你阅读关于如何Simulate a Windows Service using ASP.NET to run scheduled jobs
谢谢,我会看看它。是的,我必须在asp.net中执行此操作,因为整个应用程序都是用asp.net编写的 – Paks 2013-02-19 08:23:43
我必须在哪里放置这个以便我的方法自动执行? – Paks 2013-02-19 09:44:30
我在整个项目的条件中使用它,但你只需要触发一次,在global.asax-> Application_Start – IamStalker 2013-02-19 09:52:19