2013-02-19 144 views
1

我有從Webservice中讀取Data的函數。有了這個數據,我創建了位圖。我將位圖發送到顯示創建的位圖的面板(顯示器)。手工工作就像魅力。我現在需要的是,我的應用程序每5分鐘在Backround中自動運行此功能。在後臺每5分鐘執行一次函數

我的應用程序正在IIS下運行。我怎樣才能做到這一點?有人可以幫助我嗎?

回答

1

你不必依賴於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); } 
    } 
} 
+0

我必須在哪裏放置這個以便我的方法自動執行? – Paks 2013-02-19 09:44:30

+0

我在整個項目的條件中使用它,但你只需要觸發一次,在global.asax-> Application_Start – IamStalker 2013-02-19 09:52:19

3

一個Asp.Net應用程序不是這樣的任務的正確框架。

您應該爲此類任務創建一個dedicated service

另一種選擇是創建一個scheduled task將運行每隔X分鐘

在一個側面說明,如果你必須做到這一點通過你的asp.net應用程序,我建議你閱讀關於如何Simulate a Windows Service using ASP.NET to run scheduled jobs

+0

謝謝,我會看看它。是的,我必須在asp.net中執行此操作,因爲整個應用程序都是用asp.net編寫的 – Paks 2013-02-19 08:23:43

相關問題