2012-01-06 5 views
0

저는 UI 레이어에 C# 클래스 (asp.net 페이지가 아님)가있는 타이머를 사용할 때 타이머 컨트롤을 사용하여 전자 메일을 보내려는 ASP.NET 웹 응용 프로그램이 있습니다. application.start() 메소드에서 timer를 시작하겠습니다. 백그라운드에서 작업을 계속할 백그라운드에서 설정하고 싶습니다. 실행 가능한 솔루션인지 제안하십시오. 그렇지 않다면 대체 솔루션이 될 수 있습니까? 타이머 컨트롤은 웹 애플리케이션에서는 불가능하지만 C# 클래스에서는 ASP.net 페이지가 아니기 때문에 사용할 수 있습니다. 해결책을 제안하십시오.ASP.Net 타이머 컨트롤이 필요합니다.

감사합니다.

+0

문제를 해결 했습니까? – BrOSs

답변

0

이것은 저에게 효과적입니다. 처음 타이머가 서버에 GC에 의해 수집되지 않습니다 알고 테스트 : 명심

의 Web.config

<configuration> 
    <system.net> 
    <mailSettings> 
     <smtp> 
     <network defaultCredentials="false" host="mail.domain.com" password="psw" userName="user"/> 
     </smtp> 
    </mailSettings> 
    </system.net> 

Global.asax.cs

public class Global : System.Web.HttpApplication { 

    Timer cron; 

    protected void Application_Start(object sender, EventArgs e) { 
     cron = new Timer(1000 * 60 * 5); 
     cron.AutoReset = true; 
     cron.Start(); 
     cron.Elapsed += (s, a) => { 
      var address = "[email protected]"; 
      var mail = new MailMessage("Test <[email protected]>", address); 
      mail.Subject = "Test"; 
      mail.Body = "Timer test at " + DateTime.Now.ToLongTimeString(); 
      mail.IsBodyHtml = true; 
      var smtp = new SmtpClient(); 
      smtp.Send(mail); 
     }; 
    } 

    protected void Application_End(object sender, EventArgs e) { 
     cron.Stop(); 
    } 
} 

그 이 솔루션뿐만 아니라 다른 (thread loop, cache expiration)은 해커입니다. Windows 작업 스케줄러는 이러한 종류의 작업을 수행하도록 설계되었습니다.

관련 문제