2

ユーザーが「作成」ビューを使用してリクエストを作成するドットネットMVC 4アプリケーションがあり、ビューからのパラメーターに基づいて、コントローラーはWindowsバッチスクリプトを非同期的に実行する必要があります。

次のコードを使用してバッチ スクリプトを実行しています。

Process process = new Process();

ProcessStartInfo ProcessInfo;
ProcessInfo = new ProcessStartInfo("cmd", "/c  batchfile");
ProcessInfo.CreateNoWindow = true;
ProcessInfo.UseShellExecute = false;
ProcessInfo.RedirectStandardError = true;
ProcessInfo.RedirectStandardOutput = true;
ProcessInfo.Arguments = string.Format("{0} {1} {2}", arg1, arg2, arg3); ;

process = Process.Start(ProcessInfo);
process.WaitForExit();

コンソール アプリ プロセスは開始されますが、常にハングアップまたは無限に待機します。標準出力ログには次のように表示されます。

Microsoft Windows [Version 6.2.9200]
(c) 2012 Microsoft Corporation. All rights reserved.

C:\Program Files (x86)\IIS Express>

プロセスは、手動で強制終了した場合にのみ終了します。Visual Studio 管理者モードを実行しようとしましたが、役に立ちませんでした。

誰かがこれを回避する方法を提案できますか?

4

1 に答える 1

3

に渡されるコマンド ライン パラメータに関する参照記事を次にcmd.exe示します。確認することをお勧めします。

次に、次のように試してください。

var psi = new ProcessStartInfo("cmd.exe")
{
    Arguments = string.Format("/k \"\"batchfile.bat\" \"{0}\" \"{1}\" \"{2}\"\"", arg1, arg2, arg3),
    CreateNoWindow = true,
    UseShellExecute = false,
    RedirectStandardError = true,
    RedirectStandardOutput = true
};

using (var process = Process.Start(psi))
{
    process.WaitForExit();
}
于 2013-01-10T15:03:30.177 に答える