场景:我有一个MFC代码调用在C#中创建的exe(它是一个Windows窗体应用程序)
需要:我需要exe在关闭时返回一个值,并根据返回值重新启动相同的exe
psudocode
int result = RunExe("exename", arguments)
if(result == 1)
{
result = RunExe("exename", arguments)
}
我是否必须将if条件置于循环中?
请给我一些建议。 1.如何从exe返回一个值 2.如何收取退货价值 3.如何重启exe
答案 0 :(得分:7)
您的C#EXE可以返回这样的int值:
[STAThread]
public static int Main() {
return 5;
}
您的其他应用必须像其他人解释的那样处理返回值。
var proc = Process.Start("mycsharwinformapp.exe"):
proc.WaitForExit();
//If the code is 5 restart app!
if(proc.ExitCode==5) Process.Start("mycsharwinformapp.exe"):
答案 1 :(得分:0)
您可以使用process.ExitCode并创建一个新EXE来控制exitvalue并在需要时启动原始EXE,或者如果信息超过整数,则将信息保存在磁盘上的文件中,以便您可以处理它来自父进程(您创建的新EXE)。
答案 2 :(得分:0)
Process.ExitCode
是你正在寻找的价值......
要启动该过程,您可以使用Process.Start(string_path_to_exe,string_args)
,它将返回表示已启动进程的Process对象...等待进程结束时使用该对象的WaitForExit()
方法
答案 3 :(得分:0)
以下方法应该可以解决问题;
private static int RunProcess(string processName, string arguments)
{
Process process = new Process();
process.StartInfo.FileName = processName;
process.StartInfo.Arguments = arguments;
process.Start();
process.WaitForExit();
return process.ExitCode;
}
然后这样称呼它;
int returnCode;
do
{
returnCode = RunProcess("...", "...");
}
while (returnCode == 1);