c ++: запланировать вызов функции в будущем? - PullRequest
3 голосов
/ 03 апреля 2012

Использование Visual C ++ с MFC.Когда в моем коде происходит определенное событие, я хочу установить функцию, которая будет вызываться через 10 секунд, чтобы выполнить какое-либо действие.Обработка события происходит в статической библиотеке, которая не имеет прямых ссылок на MFC (и я бы хотел, чтобы это так и оставалось).

Как мне запланировать функцию, вызываемую в некоторыхточка в будущем?Использовать таймер?Как мне отделить Timer (который является зависимостью MFC), чтобы мой бизнес-код не имел прямой зависимости от GUI?Или, может быть, что-то еще, кроме таймера?

Обновление

Недавно начал читать о шаблон команд , который кажется многообещающим для моей ситуации.Описание (мой акцент):

В объектно-ориентированном программировании шаблон команды - это шаблон проектирования, в котором объект используется для представления и инкапсуляции всей информации, необходимой для вызоваметод в более позднее время.

Ответы [ 2 ]

3 голосов
/ 03 апреля 2012

Подход 1 Напишите функцию-обертку для вызова статической библиотеки. Перед вызовом статической библиотеки выполните сон в течение требуемой продолжительности.

Подход 2 Используйте Win32 таймер http://www.codeproject.com/Articles/1236/Timers-Tutorial#Win32Timers

Вы можете избежать зависимости MFC в обоих подходах.

0 голосов
/ 04 апреля 2012

Вам следует использовать вторичный поток и сказать ему подождать 10 секунд, а затем вызвать функцию. Таким образом, это окажет наименьшее влияние на остальную часть вашей программы с точки зрения отзывчивости GUI и обеспечит, что ваша функция будет вызываться независимо от того, что произойдет через 10 секунд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...