2012-03-14 3 views
-1

У меня есть цикл, который непрерывно запускает функцию, основанную на некотором состоянии. Теперь я хочу называть эту функцию каждые 10 минут только внутри цикла. Я использую Visual Studio 2005. Мой код:Как запустить функцию каждые 10 минут с помощью цикла C#?

while (boolValue == false) 
    { 
     Application.DoEvents(); 
     StartAction(); //i want to call this function for every 10 minutes only 
    } 

Я использую System.Timers, но это не вызов функции. Я не знаю, что случилось.

Мой код:

public static System.Timers.Timer aTimer; 
    while (boolValue == false) 
    { 
     aTimer = new System.Timers.Timer(50000); 
     aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent); 
     aTimer.AutoReset = false; 
     aTimer.Enabled = true; 
    } 

    private static void OnTimedEvent(object source, ElapsedEventArgs e) 
    { 
     Application.DoEvents(); 
     StartAction(); 
    } 
+0

Попробуйте планировщик заданий Quartz.net. http://stackoverflow.com/questions/8633662/call-a-method-at-a-certain-time Это OpenSource – Anand

+0

'aTimer.AutoReset = ложь;' есть ваша проблема – Yaur

+0

Если вы хотите делайте это бесконечно (даже после закрытия приложения), подумайте о том, чтобы написать приложение, чтобы сделать это один раз - даже консольное приложение. Затем добавьте запланированную задачу в Windows для запуска каждые 10 минут. –

ответ

5

Почему бы просто не использовать timer. Попробуйте каждые десять минут.

example в более конкретном варианте это очень хороший пример на самом деле

UPDATE

В обновленной код, я хотел бы изменить его к этому:

public static System.Timers.Timer aTimer; 
... 
aTimer = new System.Timers.Timer(50000); 
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent); 
aTimer.AutoReset = false; //This should be true if you want it actually looping 
aTimer.Enabled = true; 

Я не см. причину наличия цикла while. Я предполагаю, что цикл while не запускается вообще. Кроме того, вероятно, вы должны установить AutoReset равным true, чтобы это выполнялось непрерывно.