2013-02-19 2 views
1

У меня есть функция, которая считывает данные из Webservice. С помощью этих данных я создаю растровые изображения. Я отправляю битмапы в панели (Дисплеи), которые отображают созданные растровые изображения. В ручном режиме это работает как шарм. Теперь мне нужно, чтобы мое приложение выполняло эту функцию каждые 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

. Где я должен положить это, чтобы мой метод автоматически выполнялся? – Paks

+0

Я использую его на условиях всего проекта, но вам просто нужно вызвать его один раз, в global.asax-> Application_Start – IamStalker

3

Приложение Asp.Net не является правильной основой для такой задачи.

Возможно, вы должны создать dedicated service для этого типа задач.

Другой вариант заключается в создании scheduled task, который будет выполняться каждые Х минут

На стороне записки, если вы необходимо сделать это с помощью приложения ASP.NET, я рекомендую прочитать о том, как Simulate a Windows Service using ASP.NET to run scheduled jobs

+0

Спасибо я погляжу на него. Да, я должен сделать это в asp.net, потому что все приложение написано в asp.net. – Paks

Смежные вопросы