2013-02-19 7 views
1

웹 서비스에서 데이터를 읽는 기능이 있습니다. 그 데이터로 비트 맵을 만듭니다. 내가 만든 비트 맵을 표시하는 패널 (디스플레이)에 비트 맵을 보냅니다. 수동으로 그 매력처럼 작동합니다. 지금 필요한 것은 내 응용 프로그램이이 기능을 Backround에서 5 분마다 자동으로 실행한다는 것입니다.백그라운드에서 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

작성된 때문에 asp.net에서이 작업을 수행 할 수 있습니다. 그래서 내 메서드를 자동으로 실행되도록 가져 가야합니까? – Paks

+0

전체 프로젝트의 조건에서 사용하지만 global.asax-> Application_Start에서 한 번 트리거하면됩니다. – IamStalker

3

Asp.Net 응용 프로그램이 이와 같은 작업을위한 올바른 프레임 워크가 아닙니다.

이 유형의 작업에는 dedicated service을 작성해야합니다.

또 다른 옵션은 해야이 당신의 asp.net 응용 프로그램을 통해이 작업을 수행 할 경우, 내가 어떻게 Simulate a Windows Service using ASP.NET to run scheduled jobs

에 읽어 보시기 바랍니다, 보조 노트에 모든 X 분에게

를 실행하는 scheduled task을 만드는 것입니다

+0

덕분에 내가 그것을 살펴해야합니다 : 난 당신에게 내가 사용하는 코드를주지 않도록 는 사실은 내가 링크를 기억하지 않습니다. 예, 전체 응용 프로그램 asp.net – Paks

관련 문제