C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■96885 / 6階層)  単一インスタンスのアプリケーションを作成するを一時的に無効化
□投稿者/ とっちゃん (718回)-(2021/02/22(Mon) 15:00:19)
No96883 (コング さん) に返信
>>ちなみに、Load イベントは、今ウィンドウを作っていますよ(この場合はForm0かな?)というイベントです。
>>なので、ここでやっぱやめた!とする場合は、
>>Exit() ではなく Close()を呼び出し、その直後でReturnします。
>
> これに関してなのですが、
>
> Close()を呼び出すと
> Form_Close()が呼び出されてしまうため、
> 本来ならフォームが起動した場合に実行するはずのコードが実行されてしまいます。
>
本質的な面で言えば、Loadされるよりも前に二重起動チェックするべきなので、Loadでやるのはどうなの?
という別の面はありますが…

基本的にLoad中に閉じるのは、何らかの理由で画面表示されたらこまるということなので
Close処理もそれに応じて作る必要はあると思います。

> Environment.Exit(0)
> を使ったデメリットはあるのでしょうか?
> こちらを使っていて、特に問題も発生していませんし

Exit のリファレンスに書いてありますが、Exit 呼び出し以後のcatch(finaly)が呼ばれません(usingも同様)。
Exit は、プロセスの強制終了コマンドです。
そのため、ライブラリの中も含め、何かの途中の処理があれば、それも全部放棄してプロセスを終了します。

見た目的には問題ないように見えても、実はどこかにほころびがあるかもしれません。
もし、そういったほころびがあれば、それが原因でどこかのタイミングでOSが動かなくなる
なんてことがあってもおかしくありません(発生率はほぼ0ですが絶対にないとは言えない)。

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[5]: 単一インスタンスのアプリケーションを作成するを一時.. /コング →Re[7]: 単一インスタンスのアプリケーションを作成するを一時.. /コング
 
上記関連ツリー

単一インスタンスのアプリケーションを作成するを一時的に無効化 / コング (21/02/20(Sat) 13:35) #96867
Re[1]: 単一インスタンスのアプリケーションを作成するを一時.. / 魔界の仮面弁士 (21/02/20(Sat) 16:58) #96868
  └ Re[2]: 単一インスタンスのアプリケーションを作成するを一時.. / とっちゃん (21/02/20(Sat) 17:40) #96869
    └ Re[3]: 単一インスタンスのアプリケーションを作成するを一時.. / コング (21/02/21(Sun) 11:23) #96874
      └ Re[4]: 単一インスタンスのアプリケーションを作成するを一時.. / とっちゃん (21/02/21(Sun) 13:39) #96875
        └ Re[5]: 単一インスタンスのアプリケーションを作成するを一時.. / コング (21/02/22(Mon) 12:17) #96883
          └ 単一インスタンスのアプリケーションを作成するを一時的に無効化 / とっちゃん (21/02/22(Mon) 15:00) #96885 ←Now
            └ Re[7]: 単一インスタンスのアプリケーションを作成するを一時.. / コング (21/02/25(Thu) 21:08) #96902 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信