2011-06-18 59 views
0

我想在web應用程序中定期在asp.net中運行調度過程。在asp.net的網絡應用程序中包含調度

簡單地說,我的數據庫表有日期&期限Hrs.I要發送根據該計算來自然後另一個表得到更新(插入的記錄1000)定期&也想運行郵件的過程中計算的預期日期時間對於相同的。

這是應該定期執行的預期預定過程。

回答

0

看看這個老文章從Jeff AtwoodEasy Background Tasks in ASP.NET

基本上,他認爲,您使用緩存過期機制來安排定時任務。問題是:您的Web應用程序需要運行。如果網站根本沒有被調用呢?那麼,從IIS 7.5開始,您可以隨時保持您的網絡應用程序正常運行:auto starting web apps。傑夫在評論中表示,他的方法效果很好,直到他們超過了它。他的結論是,對於小型網站這是一個很好的方法。

+0

@Michel Overeem:我想要這個建議,這是更高效和簡單的方法來做到這一點? – MayureshP

+0

@MayP我增加了一些東西。如何對投票中的某些答案進行投票?如果沒有問題,那麼請擴展你的問題來解釋你正在尋找的更多東西。 –

+0

@MayP所以現在你有幾個答案。如何對他們做出反應?提高投票或解釋你缺少的東西。似乎你不會在你的問題上付出很多努力。 –

0

這裏就是我所做的:

public class Email { 
     private static System.Threading.Timer threadingTimer; 

     public static void StartTimer() 
     { 
      if (threadingTimer == null) 
       threadingTimer = new Timer(new TimerCallback(Callback), HttpContext.Current, 0, 20000); 
     } 

     private static void Callback(object sender) 
     { 
      if (/* Your condition to send emails */) 
       using (var context = new MyEntities()) 
       { 
         var users = from user in context.Usere 
            select user; 
         foreach (var user in users) 
         { 
          // Send an email to user 
         } 
       } 
     } 
    } 

而且你必須把它添加到的Application_Start:

void Application_Start(object sender, EventArgs e) 
    { 
     EMail.StartTimer(); 
    } 
+0

如果應用程序沒有打開兩天呢? – MayureshP

+0

@MayP:如果您擁有足夠的權限,您可以將應用程序池超時設置爲0.但是,如果不是(像我一樣),則可以在您的站點中放置一個空網頁,並設置另一個定時器來定期讀取它,比如說每19分鐘。 – nima

相關問題