C#で開発しています。Buttonのイベントについてですが、KeyDownである処理のループを開始して、KeyUpでその処理を中断しています。KeyDownでFlagをONします。KeyUpでFlagをOFFします。動作処理の最初にFlagの状態をみて、開始(継続)するか、中断するかを判断しています。問題はKeyUpの処理が遅れてしまうことです。FlagがOFFになるのが遅れるので、動作処理が2〜3回くらい繰り返されてしまいます。何かいい方法があるのでしょうか?分かりにくい文章で申し訳ありませんが、よろしくお願いします。誤解していたら申し訳ありません。イベントでは駄目なのでは?押しっぱなしってことも考えられるので。フラグが立っていたら処理しない。処理中フラグを立てる。ここでループの処理?を行う。処理が終わったので、フラグを元に戻す。21:35:41)ひろさん、ありがとうございます。仕事でC#のプログラムからモーターを回転させようと思います。そこで、KeyDownでStartして、1動作で4回転回るという動作をさせます。この動作をwhile処理で繰り返し、連続動作をさせる、KeyUpで動作中断(中断処理を行うまでは動き続ける)、ということをやろうとしています。whileの条件文はwhile(!cancelflag){動作処理}としています。trueとしています。KeyUpしても、while文が2〜3回繰り返されます。悪い時はKeyを放しても動き続けてしまいました。確実に発生させたい時はどうしたらいいでしょうか?どうしようもありません。系のイベントは、そういうリアルタイム入力用には適していないんです。呼び出して、キーの押下状態をチェックすればよろしいんじゃないでしょうか。返信ふと思いついたのですが、「モータを回転させる」モジュールのレスポンスが悪くて処理が溜まっているという可能性は無いのかな、と?「モータ回転モジュール」がスレッド動作なんかしてたら出来たりして。思いつきなので、「そんなこと無いよ」なら無視してください。思いつきなので、「そんなこと無いよ」なら無視してください。便乗にて失礼します1.「キーの押下状態」とはかけ離れますが、マウス左ボタンの離されているか?は、確かAPIなしで判定できたと記憶してます。23:03:53)みなさん、ありがとうございます。動作を確認したところOKでした。!!実際行いたい処理のところに入れたら、Applicationが止まってしまいました。GetAsyncKeyState(Key.F1);}です。GetAsyncKeyState(Key.F1)の直前でブレイクをかけ、ステップインを押したのにもかかわらず、Applicationが画面の前面に来て、ブレイクポイントも飛んでしまいます。以降、Applicationのボタンは押せ、表示等は変わるのですが、モーターは動かなくなりました。if(!checkkeyboad))をコメントアウトすると正常に動作します。返信エビアンさん、渋木さんの回答を良く読んでみてください。操作を受け付けなくていいなら...」^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^と回答されていますよ。何をするものなのかを調査することは必要であると思います。22:25:56)渋木宏明(ひどり)さん。ひろさん、ご指摘ありがとうございます。以後、失礼のないように気をつけます。Studioも受付けないんですね。どのように使うのか・・・たしかに、もう少し調べる必要がありそうです。みなさん、ありがとうございました。