2012-04-03 13 views
3

MFCでVisual C++を使用します。私のコードで特定のイベントが発生すると、10秒後に呼び出される関数を設定して、何らかのアクティビティを実行したいと考えています。このイベントの処理は、MFCへの直接リンクを持たない静的ライブラリで発生します(このようにしたいと思います)。C++:今後の関数呼び出しのスケジュール?

今後、ある時点で関数を呼び出すようにスケジュールするにはどうすればよいですか?私はタイマーを使用すると思いますか?自分のビジネスコードがGUIに直接依存しないようにTimer(MFC依存関係)をどのように切り離すのですか?タイマー以外の何か?

更新

は最近、私の状況のた​​めの有望なようだCommand Patternについて読み始めました。説明が(私の強調)である:オブジェクト指向プログラミングにおいて

、コマンド・パターンは、オブジェクトが呼び出しAの方法に必要なすべての 情報を表し、カプセル化するために使用される設計 パターンであります後の時間。

答えて

3

アプローチ1 は静的ライブラリへの呼び出しのためのラッパー関数を記述します。 静的ライブラリ呼び出しの前に、必要な時間スリープを行います。

アプローチ2あなたは、両方のアプローチでMFCの依存を避けることができるのWin32タイマーhttp://www.codeproject.com/Articles/1236/Timers-Tutorial#Win32Timers

を使用してください。

+0

ビジネスロジックがGUIスレッドから呼び出され、そのスレッドのスリープによってGUIがハングアップする可能性があるため、スリープが機能しないと思います。 Win32タイマーはMFCよりやや優れていますが、依然としてWin32に依存しています。私はタイマーを抽象化し、ビジネスクラスに依存関係を注入したTimerServiceクラスを考えていました。 – User

+0

C++ 11にも条件変数があります。 – Ryan

0

セカンダリスレッドを使用し、10秒待ってから関数を呼び出すようにしてください。こうすることで、GUIの応答性に関してプログラムの残りの部分に与える影響を最小限に抑え、10秒後に関数が無関係に呼び出されるようにします。

関連する問題