Formでメニューのexeと起動するアプリのexeを分けずにメニューからアプリを起動する方法が知りたいです。Serviceを読んで理解し、同意したものとみなします。Formでメニューのexeと起動するアプリのexeを分けずにメニューからアプリを起動する方法が知りたいです。681件01タイトルの方法を実現する方法として、メニューをexeにして、各アプリをDLLにしてメニューから呼び出すという方法が一つ思い浮かびますが、この場合各アプリ画面でモーダル表示のダイアログ画面を表示している間、メニュー画面にフォーカスを戻せなくなる問題があると認識しています。この問題を解決したい場合はやはりメニューのexeと各アプリのexeを分けるしか方法はないでしょうか?何かこの問題を回避する方法がありましたらご教示頂ければ幸いです。個の銅バッジ1回答を書いてしまいましたが、タイトルには「分けたほうが良い?」とあり質問文中には「分けるしか方法はないでしょうか?」とあり、各文言を文字通りに尊重した場合、分けたいのか分けたくないのかはっきりしませんでした。「分けずに実現する方法が知りたい」のであれば、そうはっきりと記述してください。Form1());のように記述されていると思います。Application.Run(Form)は引数に渡されたFormを表示し、そのFormが閉じられた時点で終了します。このApplication単位でモーダルダイアログが実現されています。ところでこのApplicationはプロセス単位ではなくスレッド単位の概念です。異なるスレッドで起動すれば相互に影響することはありません。Form2()));thread2.SetApartmentState(ApartmentState.STA);thread2.Start();と新たなスレッド上で実行開始してあげれば、メニュー画面はアプリ画面のモーダルの影響をうけなくなります。この例でのForm2が閉じられた時点でthread2は終了します。Application.Exit()についてpgrhoさんが言及されていたので加筆します。ループをすべて停止し、アプリケーションのウィンドウをすべて閉じます。説明されているように全スレッドのメッセージループを停止させるメソッドですから仕様通りの動作をします。現在のスレッドだけを終了させるためにはApplication.ExitThread()を使用すべきとも案内されています。次善策としてAppDomainを分離することを提案されていますが、それでもプロセスを終了させるEnviroment.Exit()に対しては無力ですし、質問文にあるようにプロセスを分離したとしてもExitWindowEx()でPCを止められることもあり得ます。結局、どこまでを許容するかの話でしかないと思います。個の銅バッジすみません。メニューをとじたらメニューのexeは、停止する認識です。さん「認識です」と個人的な感想を述べられても何に対する認識なのかわからず困ります。仕様に対する認識なのであれば質問者にしか知り得ない情報ですから「メニューを閉じたらexeも停止する仕様です」のように情報開示してください。回答でも説明していますが、Application.Exit()とApplication.ExtThread()とを適切に使い分ければいいかと。各アプリは自Formを閉じたりApplication.ExtThread()を使用すればメニュー及び他アプリに影響せず閉じられます。メニューはApplication.Exit()を使用すればメニュー及び全アプリを閉じることができ、exeを終了できます。ことになることを知りたかったです。ありがとうございました。逆に各アプリ画面を閉じてもメニューは起動したままになることです。PCの停止で全アプリが停止するのは問題ありません。|1System.Windows.Form.Applicationはスレッドセーフということになっていますが、Application.OpenFormsなどの一部フィールドが全スレッド共有のため、全フォームに対する処理が行われると想定外の動作をする場合があります。Application.Exit()はスレッドに関係なくすべてのフォームを閉じようとします。少なくともAppDomainは分離した方が良いです。user.configを共用にしたいなどの理由がなければ別プロセスで実行するのが簡単です。path)を呼び出すことで参照先を変更することが出来ます。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。