0

MDIWindowsフォームアプリケーションの親としてForm1を使用しているとします。btnStartボタンがあり、単純に多くの計算を実行します。たとえば、次のようにします。

double i;
while(blnContinue)
{
i=(i+1)%100000;
}

Form2は、blnContinue=falseを割り当てるだけのbtnStopボタンを持つ子です。whileループが壊れるように;

ただし、要点は、btnStopが押されたときにForm2がイベントを発生させることができないということです。

この場合、whileループを含む関数を別のスレッドで作成し、親フォームでbtnStopを作成するのは簡単です。

ただし、メインスレッドで「無限」のwhileループを実行する必要があるため、スレッドとして作成して開始/停止することは許可されていません。

Form2のイベントを処理する方法を知っている人はいますか?前もって感謝します!

4

1 に答える 1

0

ループ内で、たとえば 100 ミリ秒ごとに Application.DoEvents を呼び出す必要があります。他に選択肢はないと思います。そうしないと、アプリ全体がロックされているように見え、どこでもイベントが発生しないため、何もする機会がありません。別のスレッドの使用を妨げているものはありますか?

于 2012-09-10T04:41:29.330 に答える