こんにちは私はいくつかのチェックボックスをプログラムで特定のシーケンスでチェックしたりチェックを外したりするようにプログラムしようとしています。私はそれが馬鹿に聞こえることを知っていますが、これは私がすでにチェックイベントをコード化しているいくつかのLEDコントロールに対応しています。チェックボックスのチェックシーケンスを作成する
このシーケンスを開始するにはチェックボックスをオンにし、停止するにはこのチェックボックスをオフにします。現在、私のD2チェックボックスのチェックとアンチェックはうまくいきますが、do while
ループでフォームがフリーズしてしまい、実際にサイクルボックスのチェックを外すことはできません。おそらくThread.Sleep
を使ってはいけません。アドバイスをいただければ幸いです。 UIが凍結されている理由ですがチェックイベント内で直接呼び出された場合
private void cycleCheckBox_CheckedChanged(object sender, EventArgs e)
{
do
{
D2.Checked = true;
Thread.Sleep(1000);
D2.Checked = false;
Thread.Sleep(1000);
} while (cycleCheckBox.Checked);
}
ループを終了するには別の方法を使用してください。ループにカウンタを入れて10などの後に終了してください。私はこれがUIスレッドで実行されていると考えているので、sleepを呼び出すとUIがスリープしてループを終了するのが非常に難しくなります。ループ内のロジックを別のスレッドに移動する必要があります。タイマーのための – evanmcdonnal