相同的程序,相同的参数,不同的位置和不同的退出代码

时间:2016-08-17 09:40:15

标签: c# windows exit-code interprocess

我在使用.exe进行进程间通信时遇到意外问题。

它似乎在桌面目录中工作但它失败了,并且在我的项目目录中的代码exitcode中给出了一个奇怪的未设置。

enter image description here

我无法找到问题的根源。 exec被编译为一个文件,其中包含所有库,您可以看到它在桌面目录中工作,但在其他目录中停止。退出时,主程序中会给出同样奇怪的exitcode

        var process = new Process
        {
            StartInfo = {
                FileName = @"WF_Mag.exe",
                Arguments =
                    $"\"{Account.Host}\" \"{Account.DbName}\" \"No\" \"{Account.Login}\" \"{Account.Password}\" \"{Account.DateFrom.ToString("yyyy-MM-dd")}\" \"{Account.DateTo.ToString("yyyy-MM-dd")}\" ",
            CreateNoWindow = false,
            UseShellExecute = false,
            RedirectStandardError = true,
            RedirectStandardOutput = true,
            },
            EnableRaisingEvents = true
        };
        process.OutputDataReceived += Process_OutputDataReceived;
        process.Exited += (sender, args) =>
        {
            var proc = sender as Process;
            if (proc != null)
            {
                var sb = new StringBuilder();
                var exitCodeFlags = (ExitCodes)proc.ExitCode; // returns -532462766

                if (exitCodeFlags.HasFlag(ExitCodes.ArgumentsError))
                    sb.Append("Błędna liczba argumentow \n");
                if (exitCodeFlags.HasFlag(ExitCodes.DateFromError))
                    sb.Append("Zły format daty początkowej \n");
                if (exitCodeFlags.HasFlag(ExitCodes.DateToError))
                    sb.Append("Zły format daty końcowej \n");
                if (exitCodeFlags.HasFlag(ExitCodes.LibraryError))
                    sb.Append("Błąd wewnętrzny biblotek \n");
                if (exitCodeFlags.HasFlag(ExitCodes.WrongConnectionData))
                    sb.Append("Złe dane połączenia \n");

                ip.Report(exitCodeFlags == ExitCodes.Success
                    ? new Tuple<string, int?, bool>("Proces pobierania zakończył sie sukcesem", 100, false)
                    : new Tuple<string, int?, bool>("Proces pobierania zakończył sie błędnie \n" + sb, 100, true));
            }
        };

        process.Start();
        process.BeginOutputReadLine();
        process.WaitForExit();

我被困了,我正在寻找可能导致问题的一些想法。 我非常感谢任何建议。

提前致谢

0 个答案:

没有答案