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

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

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

Re[5]: BeginOutputReadLineで待ち時間が発生


(過去ログ 133 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■78835 / inTopicNo.1)  BeginOutputReadLineで待ち時間が発生
  
□投稿者/ Muu (2回)-(2016/02/20(Sat) 16:54:09)

分類:[C#] 

Win8 64bit Visual Stuidio2015 .Net4.5 C#
お世話になります。

バッチファイルを以下のようなコードで実行し、
標準出力の内容を読みとって画面表示しています。

以下のコードはリストビューを貼り付けたユーザコントロール
に組み込んでおり、
実行するバッチの数にあわせてタブページを動的に増やして
それぞれのタブページにユーザコントロールを貼り付け、
バッチの標準出力を表示しています。

実行するバッチが10個とか増やした場合、1つ目バッチの起動時に
以下コード中の★部分にあるように、なぜかBeginOutputReadLine
の実行で2分30秒程度のブロッキングが発生し、
その後、残りの9個のバッチが一気に実行されるというおかしな挙動を行っています。

---------------------------------------------------- 
//Processオブジェクトを作成
m_Prs = new System.Diagnostics.Process();

//出力をストリームに書き込むようにする
m_Prs.StartInfo.UseShellExecute = false;
m_Prs.StartInfo.RedirectStandardOutput = true;

//OutputDataReceivedイベントハンドラを追加
m_Prs.OutputDataReceived += this.p_OutputDataReceived;

m_Prs.StartInfo.FileName = System.Environment.GetEnvironmentVariable("ComSpec");
m_Prs.StartInfo.Arguments = string.Format(@"/c {0} {1}", m_strCmd, m_strOption);

//画面非表示
m_Prs.StartInfo.CreateNoWindow = true;

//標準入力
m_Prs.StartInfo.RedirectStandardInput = txInput.Enabled;

//実行パス
m_Prs.StartInfo.WorkingDirectory = m_strExecPath;

//管理者権限
if (m_bAdmin)
	m_Prs.StartInfo.Verb = "RunAs";

//起動
try
{
	if (m_Prs.Start())
	{
		//非同期で出力の読み取りを開始
		m_Prs.BeginOutputReadLine();
		//★2分30分前後の待ち時間発生★
		return true;
	}
	else
	{
		MessageBox.Show("起動失敗", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
	}
}
catch (Exception err)
{
	MessageBox.Show(err.Message, "プロセス起動異常", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
return false;

------------------------------------------

また、この現象は実行するたびに発生したりしなかったりです。
(1)実行対象1個で実行 → 発生しない
(2)実行対象7個で実行 → 発生
(3)実行対象1個で実行 → 発生しない
(4)実行対象2個で実行 → 発生しない
(5)実行対象3個で実行 → 発生
(6)実行対象2個で実行 → 発生
(7)実行対象1個で実行 → 発生

BeginOutputReadLineでこのようなブロッキングが発生する現象について
ご存じないでしょうか。

よろしくお願いします m(__)m

引用返信 編集キー/
■78836 / inTopicNo.2)  Re[1]: BeginOutputReadLineで待ち時間が発生
□投稿者/ Muu (3回)-(2016/02/20(Sat) 17:12:47)
追加情報です。 
バッチファイルの中身をecho によるメッセージ表示
だけにしても発生しています。


           以上
引用返信 編集キー/
■78902 / inTopicNo.3)  Re[2]: BeginOutputReadLineで待ち時間が発生
□投稿者/ shu (815回)-(2016/02/23(Tue) 13:32:56)
No78836 (Muu さん) に返信

関係するかわかりませんが、Beginした後は
読み終わるまで処理を行っているのでしょうか?

引用返信 編集キー/
■78907 / inTopicNo.4)  Re[3]: BeginOutputReadLineで待ち時間が発生
□投稿者/ Muu (8回)-(2016/02/23(Tue) 18:33:07)
shu 様
ご返信、ありがとうございます。

>読み終わるまで処理を行っているのでしょうか?

内容がよく理解できないのですが、正常実行できている
パターンもあり、読み終わるまでは行っている、という
認識です。


現象について、追加でわかったことがあります。
端末がドメインに参加している場合にどうやら現象が
発生するようです。

端末はドメイン参加でユーザはローカルユーザログインでも
ドメインユーザログインでも現象が発生します。

端末がドメインに参加していない場合は現象が発生
しません。

ドメインに参加することで、アプリの動きに影響がでるよう
なものがあるのでしょうか?
(セキュリティポリシーとか?)

以上、よろしくお願いします。




引用返信 編集キー/
■78908 / inTopicNo.5)  Re[4]: BeginOutputReadLineで待ち時間が発生
□投稿者/ 魔界の仮面弁士 (653回)-(2016/02/23(Tue) 19:25:33)
No78907 (Muu さん) に返信
> 現象について、追加でわかったことがあります。
> 端末がドメインに参加している場合にどうやら現象が
> 発生するようです。

アクセス権の認証処理に、時間がかかってしまっているのかもしれません。

セキュリティ監査ログ(イベントビューワー)に、
何か報告が上がっていたりはしないでしょうか。
引用返信 編集キー/
■78911 / inTopicNo.6)  Re[5]: BeginOutputReadLineで待ち時間が発生
□投稿者/ Muu (10回)-(2016/02/23(Tue) 19:55:57)
魔界の仮面弁士 様
お世話になります。アドバイス、ありがとうございます。

イベントビューワーを確認し、再度実行してみたりもしましたが、
現象は発生するも、ログには何も表示されませんでした。

                    以上
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -