Win32 функция для запланированных задач в C ++ - PullRequest
2 голосов
/ 21 мая 2009

У меня есть функция в C ++, которую нужно вызвать через некоторое время, и эта задача повторяется. Знаете ли вы какие-либо встроенные функции или примеры кода в Win32 или pthread?

Спасибо

Julian

Ответы [ 3 ]

5 голосов
/ 21 мая 2009

Как насчет SetTimer .

  1. Создание функции-обертки для использования в качестве обратного вызова для установленного таймера.
  2. Функция Wrapper вызывает вашу функцию.
  3. После завершения функции функция-обёртка снова вызывает SetTimer для сброса таймера.
1 голос
/ 21 мая 2009

Как примечание, я надеюсь, что вы не делаете в коде что-то, что можно сделать через ОС. (Я не знаю достаточно о ваших требованиях, чтобы сказать, но я думал, что укажу это).

Такие вещи, как планировщик задач (окна), предназначены для планирования повторяющихся задач, и они часто лучше справляются с работой, чем ручные решения.

0 голосов
/ 10 июля 2013

SetTimer!

Пример:

  #include <windows.h>
  #include <stdio.h>

  void CALLBACK scheduled_task_1 (HWND hwnd, UINT msg, UINT id, DWORD time) 
  {
      puts("Executing  scheduled_task_1 every half-second event");
  }

  void CALLBACK scheduled_task_2 (HWND hwnd, UINT msg, UINT id, DWORD time) 
  {
      puts("Executing  scheduled_task_2 every two seconds event");
  }

  void CALLBACK scheduled_task_3 (HWND hwnd, UINT msg, UINT id, DWORD time) 
  {
      puts("Executing  scheduled_task_3 24 hours event");

  }

  void messageLoop(void) {
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0) > 0)
      DispatchMessage( &msg );
  }

  int main(void) 
  {
    while(true)
    {
        SetTimer (NULL, 0,   500, scheduled_task_1);  /* every half-second */
        SetTimer (NULL, 0,  2000, scheduled_task_2);  /* every two seconds */
        SetTimer (NULL, 0, 60*60*24*1000, scheduled_task_3); /* after 24 hours or 86400000 milliseconds */
        messageLoop();
    }
    return 0;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...