Hej!Process ExitCode : Processen avslutas för tidigt??
Jag har ett problem som jag inte riktigt har en bra idé om vad det handlar om.
Jag har ett C#-program där jag startar en Process. Denna processen är ett JAVA-program (simuleringsprogram) som kör en simulering.
När jag kör en simulering som är relativt snabb (lite data som skickas i simuleringen, lågt antal bilar) kommer Process:en att avslutas med ExitCode == 0, vilket är bra .Det är ju inga fel.
Men när jag kör de tyngre simuleringarna (fler bilar, mer data som skickas) så kommer Process:en att avslutas _för tidigt_ med ExitCode == 1. Jag fattar inte varför.
Alltså, JAVA-processen som körs i C# "Process" kommer avslutas för tidigt.
OBSERVERA att när jag kör EXAKT samma simulering manuellt (genom Eclipse) så går det igenom precis som det ska. Det är alltså bara när denna JAVA-process startas genom C#-programmet som det "klipps av"
Tydligen är det bara när jag kör den tyngste av simuleringarna som detta händer. Här kommer först lite utskrifter jag gör medan Processen kör, utskrifter precis efter att Processen är klar/har dött, därefter koden som det gäller:
==========================
System.Diagnostics.Process (java) -
-------------------------------------
physical memory usage: 83795968
base priority: 8
priority class: Normal
user processor time: 00:03:20.8281250
privileged processor time: 00:00:00.9218750
total processor time: 00:03:21.7500000
Status = Running
System.Diagnostics.Process (java) -
-------------------------------------
physical memory usage: 83795968
base priority: 8
priority class: Normal
user processor time: 00:03:22.1093750
privileged processor time: 00:00:00.9218750
total processor time: 00:03:23.0312500
Status = Running
System.Diagnostics.Process (java) -
-------------------------------------
physical memory usage: 83795968
base priority: 8
priority class: Normal
user processor time: 00:03:23.3906250
privileged processor time: 00:00:00.9218750
total processor time: 00:03:24.3125000
Status = Running
***** HÄR VERKAR PROCESSEN AV AVSLUTATS *****
***** UTSKRIFTER FRÅN JAVA-PROGRAMMET, SIMULATORN (som jag "fångat" i C#) ******
Specified region is (-2493645.1984349997,2480707.16175), (-2489694.0087615,2484642.2771972)
After loading streets, region is (-2493097.0837942497,2481253.208252), (-2490241.898673,2484096.45448475)
Maximum number of cars for region: 21600
Number of segments loaded: 1800
Knark2
Sleeping for 3000000000
3000000000 [EventHandler 1] Stopping car on segment 351.
3000000000 QUEUE!! Stopping car 4! (SM.moveToNextRoad)
Retry number 1
Retry number 2
Retry number 3
Retry number 4
Retry number 5
Retry number 6
Retry number 7
==========================
Därefter printas
"
True
ExitCode=1";
Jag fatta nada ... =)
Här är koden:
<code>
Process swansProcess = new Process();
swansProcess.StartInfo.FileName = fileName;
swansProcess.StartInfo.Arguments = "-classpath " + classPath + arguments;
swansProcess.StartInfo.RedirectStandardOutput = true;
swansProcess.StartInfo.UseShellExecute = false;
swansProcess.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;
swansProcess.Start();
swansProcess.WaitForExit();
Console.WriteLine(output + "\r\n" + swansProcess.HasExited+"\r\nExitCode="+swansProcess.ExitCode);
</code>