プロが教える店舗&オフィスのセキュリティ対策術

RunTimer = gcnew Timer();
RunTimer->Interval = 50;
RunTimer->Tick += gcnew EventHandler(this, &RunTick);
RunTimer->Enabled = true;
・・・処理・・・
RunTimer->Enabled = false;
System::Threading::Thread::Sleep(1000);
としているのですが、数コマ動いてしまいます。

処理は3枚の画像を差し替えて動かしているのですが、即座にスリープがかからず、
画像が少し歪んでしまいます。

ソースが長く、どこを記載すれば良いのか解らず、かなり抜粋しましたが、
TimerのTickで画像を入れ替えて、歩いている様にみせかけています。
一時停止後、改めて処理を始めようと思っているのですが、
なぜだか、少し動いてしまします。

Sleepを削除すると、うまく止まるのですが、即座に次の処理に移行してしまう為、数秒停止させたいと考えています。
System::Threading::Thread::Sleep(1000);
だけでは、即座に止める事はできないものでしょうか?

また、TimerのTickを数秒止める事はできるものでしょうか?
ご存じの方、アドバイスよろしくお願いいたします。

A 回答 (1件)

一つのイベント処理内にいるのにRunTickへ処理が移ることはないですよ



その処理中に『Application::DoEvents()』を呼び出したりしていませんか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!