2012-04-03 64 views
3

在MFC中使用Visual C++。当我的代码中发生某个事件时,我想设置一个函数在10秒后调用以执行一些活动。事件的处理发生在一个静态库中,它没有直接链接到MFC(我想这样保留)。C++:将来调度函数调用?

我该如何安排将来某个时间点的功能?我想用一个计时器?如何分离Timer(这是一个MFC依赖项),以便我的业务代码不直接依赖于GUI?或者除了定时器以外还有别的东西?

更新

最近开始阅读这似乎看好了我的情况Command Pattern。该描述是(我的强调):

在面向对象的编程中,该命令图案是设计 图案,其中一个目的是用来表示和封装所有 在需要呼叫的方法的信息晚点。

回答

3

方法1 写包装函数的调用静态库。 在静态库调用之前,进行所需持续时间的休眠。

方法2 使用一个Win32计时器http://www.codeproject.com/Articles/1236/Timers-Tutorial#Win32Timers

可避免这两种方法的MFC依赖。

+0

我认为睡眠不起作用,因为我的业务逻辑是从GUI线程调用的,所以该线程中的睡眠可能会导致GUI挂起。 Win32计时器比MFC略好,但依然依赖于Win32。我想也许有一些TimerService类抽象计时器,并依赖注入到我的业务类.. – User 2012-04-03 17:35:02

+0

明白了。 C++ 11也有条件变量。 – Ryan 2014-06-08 01:23:44

0

你应该使用一个辅助线程,并告诉它等待10秒,然后调用该函数。通过这种方式,它将对GUI程序的其余部分影响最小,并确保您的函数在10秒后不受任何影响地被调用。