-3

私は C# を初めて使用し、Visual Studio 2010 で実行している基本的なプログラムを作成しました。ウィンドウを閉じると、プログラムが停止します。ただし、IDE が編集モードに戻るまでに数秒の遅延があります。ウィンドウが閉じられたときにプログラムをすぐに終了するにはどうすればよいですか?

private void button1_Click(object sender, EventArgs e){
    While (Visible) {
        for (int c = 0; c < 254) {
            this.BackColor = Color.FromArgb(c, 255 - c, c);
            Application.DoEvents();
            System.Threading.Thread.Sleep(3);
        }
        for (int c = 254; c >= 0) {
            this.BackColor = Color.FromArgb(c, 255 - c, c);
            Application.DoEvents();
            System.Threading.Thread.Sleep(3);
        }
    }
}

「System.Threading.Thread.Sleep(3);」を削除してみました。ループから削除しましたが、それでも問題の修正には役立ちませんでした。これを複数のマシンで再現することもできました。なぜこれが起こっているのでしょうか?

4

5 に答える 5

1

Visual Studio がプログラムをデバッグしているとき、プログラムはプロキシ アプリケーションを介して実行されます。プログラムが終了したら、プロキシも停止する必要があり、さらにビジュアル スタジオは編集モードに戻る必要があります。この移行は即時ではなく、発生している遅延である可能性があります。

プログラムをリリース モードでビルドし、デバッグせずに実行してみてください。それならすぐにシャットダウンできるはずです。

于 2012-07-14T18:54:55.870 に答える
0

これを試して:

Application.Exit();

もっと速い方法があるとは思えません。

于 2012-07-14T18:29:40.210 に答える
0

遅延が発生するのは、while ループが Visible がまだ true かどうかを確認する前に、for ループが終了する必要があるためです。&& Visible == trueを各 for ループの条件テストに追加することで修正できました。そうすれば、Visible が false になるとすぐにループが終了します。

于 2012-07-15T05:27:54.737 に答える
0

実行中のアプリケーションを閉じるには (アクティブなフォームに関係なく)、次を使用します。

System.Environment.Exit();

そして、これをフォームの onClose イベントに追加できます

于 2012-07-14T18:53:05.257 に答える
-1

Ctrl.+でプログラムを実行するだけですF5

于 2012-07-14T18:30:37.523 に答える