我有從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