- - PR -
自動的に終了するには
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-01-19 10:41
えーと、例えば別スレッドを立ち上げているときとか? メインスレッドは終了するけど、サブスレッドは止まらないんじゃないでしょうか。 (こないだ実際そういうのを実感する機会があったので) なんにせよ、どうやって動いているかを知ることは大事かもしれないですね。 と、ちゃんと勉強してなくて流れでなんとなく考えてるだけの私が言ってみる orz _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||||||
|
投稿日時: 2007-01-19 10:51
マネージドなスレッドの場合、Thread.IsBackground プロパティに依存します。 // Application.Run を 2 行続けて書いて、 // 先に起こしたメインフォーム上で Application.Exit を呼び出すと // 二つ目の Application.Run のメインフォームが瞬殺される……。 [ メッセージ編集済み 編集者: Hongliang 編集日時 2007-01-19 10:52 ] | ||||||||||||
|
投稿日時: 2007-01-19 10:59
なるほど、Thread.IsBackground = false なスレッドが居残っている時ですね。 | ||||||||||||
|
投稿日時: 2007-01-19 11:02
試してみました。 おお、本当ですねー(今まで知らなかったのかアンタ)。 Application.Exit はまぁ名前からしてそういう用途?に使うためにあるのだと思います けど、どうも「なんでもかんでも Exit で捨てちゃえばおk」って感じがして少し違和感が。 # 「拳銃は最後の武器だ」みたいなもん?(違 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||||||
|
投稿日時: 2007-01-19 11:56
e.Cancel = true とかすれば終了しません。少なくとも.NET2.0では。 [ メッセージ編集済み 編集者: べる 編集日時 2007-01-19 12:16 ] | ||||||||||||
|
投稿日時: 2007-01-19 11:59
Windows Form の場合は、これでは強制終了扱いです。 それと、MSDN ライブラリの使用例のコードは、問題のないコードばかりではありません。
通常、Application.Exit メソッドで、アプリケーションは終了します。 ただし、プロセスが終了するとは限りません。 (呼び出し元の Run メソッドに制御を返すだけですから) # プロセスを強制終了するには、System.Environment.Exit([System.Integer]) メソッド ということで、Application の終了 == プロセスの終了だと誤解なさっていたかと思っていたのですが... 書いている最中の返信を拝見しますと... どうも、そういう意味ではなさそうでした。orz # Application の終了 == プロセスの終了だと思っている方って多いので、 # 確認の投稿をしたつもりだったのですが、orz な結果でしょんぼりです。(;´・ω・`) [ メッセージ編集済み 編集者: じゃんぬねっと 編集日時 2007-01-19 12:04 ] | ||||||||||||
|
投稿日時: 2007-01-19 16:30
Closeすることはほとんど同じだと思っていました。。。。 #なんかものすごく勉強になりました。。 #MSDNのApplication.Exitに書いてある「強制的に Run を返します。」というのに違和感を感じたので #原文を見ると「forces Run to return.」。「Runに(対して)強制的にreturnさせます」ということで #Runメソッドは終了(return)するんであってますよね。 |