次のようなC++コードがあります。待機可能なタイマを無期限に保留する方法
まず私は、次のような手動の待機可能タイマーを作成します。
HANDLE hWTimer = CreateWaitableTimer(NULL, FALSE, NULL);
その後
それが一度発射する将来的には所定の時間に設定されています(実際の値は、ユーザ入力により提供される):
double fSeconds2Wait = 10000;
LARGE_INTEGER li;
//Convert to 100 nanosecond intervals (MUST BE NEGATIVE)
li.QuadPart = -10000000LL * (LONGLONG)fSeconds2Wait;
SetWaitableTimer(hWTimer, &li, 0, NULL, NULL, 0);
その後、私は火にタイマーを待って、待っている状態で存在するワーカースレッドを持っている:
WaitForSingleObject(hWTimer, INFINITE);
//Perform actions when timer fires
私が持っている質問は、「hWTimer」を後で(ユーザーの要求に応じて)別の時間にリセットする可能性をもって無期限に保留したい場合、どうすればいいですか? SetWaitableTimer
タイマーのMSDNドキュメント
から
MSDN Docs(シンプルなGoogle検索で見つかる) - タイマーは、最初は非アクティブです。タイマーをアクティブにするには、SetWaitableTimerを呼び出します。 SetWaitableTimerを呼び出すときにタイマーが既にアクティブな場合、タイマーは停止してから再びアクティブになります。この方法でタイマーを停止しても、タイマー状態は通知されません。したがって、タイマーの待機操作でブロックされたスレッドはブロックされたままです。ただし、保留中の完了ルーチンは取り消されます。 – Dampsquid
@Dampsquid申し訳ありませんが、私の質問にどう答えますか? – ahmd0
それはあなたがそのが既に実行中SetWaitableTimerを呼び出すことができますし、それを再起動し – Dampsquid