質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

1688閲覧

C#(クラサバアプリ)からbatファイルの多重起動について

gawa_sada

総合スコア9

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2019/09/02 12:43

C#のクラサバアプリからbatファイルを経由して別のアプリを多重起動しようとしていますが
うまくいきません。

batファイルはProcessクラスを使用して起動します。
その後、List<Process>に格納
※同じbatファイルは最大3回呼ばれます。

全てを起動したら、List<Process>の中身それぞれに対し
WaitForExit()で待つような仕組みです。

起動元のアプリ、batファイル、batファイルから呼ばれるアプリそれぞれに起動ログを
入れていますが、batファイルおよびbatファイルから呼ばれるアプリでは起動した形跡がありません。
※起動元のアプリでは、3回起動するログ、3回終了を待つログが見えます。

これは、すべての場合に発生するのではなくbatから呼ばれるアプリの終了が早い場合に
起きているように見えます。
※同じ処理時間のデータを使った場合でも、batを起動する前に5秒程度sleepさせると発生しなくなることも確認できています。

確実に、起動したい回数(ここでは3回)させたいのですが、何か方法は無いのでしょうか?
状況から、batファイルは1回目~3回目まで全て同じプロセスで呼ばれ1回目の終了と2回目の開始がぶつかってしまっているようにも見えます。
しかし、こんなことはあるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2019/09/02 12:50

再現する最小のコードを新しく作って掲載してください。
gentaro

2019/09/02 12:55

クラサバってわざわざ書く割にはクライアント側の話なのかサーバー側の話なのか書かれていないのは何でだろう。
guest

回答1

0

自己解決

お騒がせしました。自己解決しました。

また、起票後10分足らずで修正依頼をいただいたご両名、やる気を出していただいたにも関わらず申し訳ないです。

原因はbatファイル内で実行時に指定していログ出力にありました。
『AP名』.bat内で以下のようなコマンドでexeをキックしていました。

start /wait /min 『AP名』.exe %* >>『AP名』.log

このログへの書き出しで、プロセスがかち合って2つ目以降が起動できなかったものと思われます。
リダイレクトを消したらまともに動きました。

投稿2019/09/02 13:57

gawa_sada

総合スコア9

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2019/09/02 14:12

だと思って回答しませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問