質問するログイン新規登録

回答編集履歴

1

コメントを考慮して自分なりの対処法を検討して追記

2021/09/01 08:15

投稿

len_souko
len_souko

スコア1367

answer CHANGED
@@ -1,3 +1,4 @@
1
+ ※僕の回答に対するコメントがありましたのでそちらの追加情報を加味して現時点でわかりうる条件を元に後ろに追記しています(2021/09/01 16:56)
1
2
  質問者の回答へのコメントなどを見てもプログラミングへの理解が足りていないどころか、ソフトウェアを利用する利用者としても理解や知識が足りてないものと推測します
2
3
 
3
4
  > エントリポイント(Program.cs)への引数やiniファイルなんかでFormを使い分けて、Application.Runもそれぞれにありました。でもそれだとそれぞれの画面を実行する度にビルドが必要になりますよね。それを回避したかったのです。
@@ -19,4 +20,36 @@
19
20
 
20
21
  これが間違っていたら質問者さん以外の人に状況が理解できるようにやりたいことをまずは他の人にわかるように書いてください
21
22
  あなた以外の人はあなたではありません
22
- 「ジュース買えなかったー、助けて」と言われてもお金がなかったのかジュースが売り切れていたのか、そもそもジュースが売られていない場所(宇宙空間等)に居るからなのかは何故買えなかったのかを書いてくれなければ本人や目撃者以外だと誰にもわかりません
23
+ 「ジュース買えなかったー、助けて」と言われてもお金がなかったのかジュースが売り切れていたのか、そもそもジュースが売られていない場所(宇宙空間等)に居るからなのかは何故買えなかったのかを書いてくれなければ本人や目撃者以外だと誰にもわかりません
24
+
25
+ 2021/09/01 16:56追記分
26
+ 本人がもう閉めてるので意味はなさそうやけど……
27
+
28
+ 言い間違いという後に書いてあるのが以下の内容だったので直前のコメントとそのレスからビルドし直しと表現した内容の説明に当たると思って読んだけど内容見て違う話を書いてるのだと解釈してました
29
+ > 要するにiniファイルにFormA,Bのどっちを表示するかを設定しておいても、実行する度にそこを書き換える必要があり、二つのexeが同時並行で存在しないと言いたかったんです。releaseでもdebugでも、フォルダ内にできるexeは一つです。
30
+
31
+ 多重起動禁止は僕の回答でようやく引き出せた内容です
32
+ にもかかわらず
33
+
34
+ > 自分としてもこれでもかというくらい分かりやすく説明しているつもり
35
+
36
+ とありますので、他にももっと漏れがあるだろうなという事は容易に推測できます
37
+
38
+ そのうえで以下の条件を元に自分ならどうするかを考えて見ます
39
+ ・多重起動禁止
40
+ ・単一フォルダのみの展開
41
+ ・実行時にどの画面を表示するのかをiniファイルから判断するも、その都度iniファイルを書き換える
42
+
43
+ 以下が思いついた自分なりの対処法
44
+ ・画面はすべて同じプロジェクトに入れる
45
+ ・質問文にある```SubClassX```はマルチスレッドで待機して呼ばれるたびに多重起動チェックで引っかからなかったら内部で外部からの待ち受け(ソケットなりなんなりを使用する)を行っておき、起動引数を受け取れるようにしておく
46
+ 引っかかったら起動済みの待ち受けに起動引数を投げて終了する
47
+ ・待ち受けで受信するたびにiniファイルの情報を元に対象となる画面を表示する
48
+  別スレッドでUIだと面倒ごとが多いので画面表示はUIスレッドで行う
49
+
50
+ 恐らくiniファイルは都度都度書き換える必要もなくオンメモリで良いと思う
51
+ UIスレッドと待ち受けスレッドの管理が面倒そうなので質問者が実装可能かどうかは考慮してない
52
+ いっそのこと画面ごとに別exeにしてしまってプロキシプログラムとして分離した方が管理が楽かもしれない
53
+
54
+ まだまだ提示されていない前提条件もあるかもしれないのでこれで解決できるかどうかは不明だけど、
55
+ 現時点で提示された条件を元に作るなら自分ならこうするという内容を大雑把に書いてみた