locomarco
Commander
- Registriert
- Aug. 2009
- Beiträge
- 2.446
Hi,
ich bin grade dabei ne kleine GUI für nen Minecraft Server zu erstellen.
Als erstes hier mal wie ich Java (der Server ist eine ausführbare *.jar Datei) starte:
"server_jar" wird vorher mit einem OpenFileDialog festgelegt.
Mit drücken des Startbuttons wird dann Java gestartet und 2 Backgroundworker die permanent StandartError und StandartOutput Zeilenweise lesen.
Der Code für den 2. Backgroundworker ist gleich, nur das er den StandartOutput in eine zweite richTextBox schreibt.
Mein erstes Problem ist das mein Programm nicht beim Debuggen funktioniert
Das heißt momentan muss ich immer das Programm immer erst in den Server Ordner kopieren, was ziemlich nervig ist und so auch nicht gedacht ist.
Hoffentlich könnt ihr mir dabei helfen. Ich bin was das Programmieren angeht noch ziemlich am Anfang
Grüße
ich bin grade dabei ne kleine GUI für nen Minecraft Server zu erstellen.
Als erstes hier mal wie ich Java (der Server ist eine ausführbare *.jar Datei) starte:
Code:
startinfo.FileName = LocateJava();
startinfo.Arguments = " -XX:+UseFastAccessorMethods -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:ParallelGCThreads=2 -XX:+CMSIncrementalPacing -XX:+UseAdaptiveGCBoundary -XX:SurvivorRatio=16 -XX:NewRatio=6 -XX:UseSSE=3 -Xmn102M -Xmx1024M -Xms1024M -jar \"" + Properties.Settings.Default.server_jar + "\" nogui"
startinfo.UseShellExecute = false;
startinfo.CreateNoWindow = true;
startinfo.RedirectStandardInput = true;
startinfo.RedirectStandardOutput = true;
startinfo.RedirectStandardError = true;
"server_jar" wird vorher mit einem OpenFileDialog festgelegt.
Mit drücken des Startbuttons wird dann Java gestartet und 2 Backgroundworker die permanent StandartError und StandartOutput Zeilenweise lesen.
Code:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
backgroundWorker1.WorkerSupportsCancellation = true;
try
{
while (java.HasExited == false)
{
richTextBox1.AppendText(java.StandardError.ReadLine() + "\n");
System.Threading.Thread.Sleep(50);
}
}
catch (Exception bw1_exc)
{
MessageBox.Show(bw1_exc.ToString());
}
backgroundWorker1.CancelAsync();
}
Mein erstes Problem ist das mein Programm nicht beim Debuggen funktioniert
Und das zweite ist, das ich nicht weiß wie ich Java in einem anderen Verzeichnis starten kann. Java soll in dem Verzeichnis gestartet werden in dem die server *.jar liegt, sonst funktionierts nicht.Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement richTextBox1 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde.
Das heißt momentan muss ich immer das Programm immer erst in den Server Ordner kopieren, was ziemlich nervig ist und so auch nicht gedacht ist.
Hoffentlich könnt ihr mir dabei helfen. Ich bin was das Programmieren angeht noch ziemlich am Anfang
Grüße