イベント処理関数 を作成しています。この関数f(d)
はデータを受け取り、アクションを実行し、100 ミリ秒スリープしてから別のアクションをd
実行する必要があります。私はそれを次のように実装します:X(d)
Y(d)
void f(d)
{
X(d);
Sleep(100);
Y(d);
}
ただし、f(d)
シングル スレッドのイベント ハンドラーから呼び出されるため、Sleep(100) は受け入れられません。
私は次のことをしたいと思います:
void f(d)
{
X(d);
ScheduleOneShotTimer(Y,d,100);
}
ScheduleOneShotTimer
呼び出しごとに新しいスレッドを作成し、データをスレッド パラメーターとして渡し、Sleep
実行前に呼び出すことで実装できますY(d)
。ただし、このイベントは 1 秒あたり最大 100 回発生する可能性があるため、これらすべてのスレッドを破棄するためのオーバーヘッドが懸念されます。
できればオペレーティング システム レベルで「ワンショット タイマー」をサポートする必要がありますが、CE ではそうではないと思います。SetTimer については知っていますが、メッセージ ループのない「コンソール アプリケーション」を書いているので、それは私には当てはまりません。
これをどのように構成するかについての他の提案をいただければ幸いです。