2012-04-01 4 views
0

기본적으로 콘솔 텍스트로 richtextbox가있는 서버 응용 프로그램이 있습니다. 문제는, 시작, 다시 시작 및 중지 단추 -하지만 내 다시 시작 단추가 작동하지 않습니다.다음 작업을 수행하기 전에 대기 완료

Heres는 다시 시작 버튼에 대한 내 코드 :

consoletxt("RESTART", "Restarting Server..."); 
statuslabel1.Text = "Restarting"; 
statuslabel1.ForeColor = Color.Orange; 
statuslabel2.Text = "Restarting"; 
statuslabel2.ForeColor = Color.Orange; 

command("stop"); 

//The performclick just starts the server 
startbtn.PerformClick(); 

statuslabel1.Text = "Online"; 
statuslabel1.ForeColor = Color.DarkGreen; 
statuslabel2.Text = "Online"; 
statuslabel2.ForeColor = Color.DarkGreen; 
consoletxt("RESTART", "Restart completed, server online!"); 

그러나, 출력이이 : 그래서

2012-04-01 11:32:12 [RESTART] Restarting Server... 
2012-04-01 11:32:12 [RESTART] Restart completed, server online! 
2012-04-01 11:32:12 [INFO] CONSOLE: Stopping the server.. 
2012-04-01 11:32:12 [INFO] Stopping server 

, 그것은 다시 시작 텍스트에 완료되었음을 말한다 -하지만 'hasn t - 서버를 중지하는 것뿐입니다. 은 PerformClick에 대한

CODE :

try { var x = ServerProc.StartTime; return; } 
      catch { } 
      try 
      { 
       ServerProc.Start(); 
       ServerProc.BeginErrorReadLine(); 
       statuslabel1.Text = "Online"; 
       statuslabel1.ForeColor = Color.DarkGreen; 
       statuslabel2.Text = "Online"; 
       statuslabel2.ForeColor = Color.DarkGreen; 

      } 

이 sombody이 제대로이 작업을 수행하는 방법을 나에게 설명 할 수주십시오?

감사합니다. 물론,

+1

여기에 중요한 'PerformClick'에 대한 코드 인 것 같습니다 ... –

+0

지금 코드를 올려 놓으 셨습니다 ... –

답변

1

좋아요 :

첫째로 당신은 그냥 예외를 잡을 수없고, 아무것도하지 않아야합니다. 아마도 서버가 아직 시작되지 않았다면 확실히 예외가 생길 것입니다. 따라서 특정 예외를 잡아서 어딘가에 기록하는 것이 이상적입니다. 또는 에 모두이 가능하면 이미 시작되었는지 여부를 감지 할 수있는 적절한 API를 만드십시오.

두 번째로 ServerProcProcess이라고 가정하면 프로세스 자체가 시작되었지만 서버가 "가동 중이고 서비스 할 준비가되었습니다"라는 의미는 아닙니다. 서버가 일 때 실제로이 실행되고 있는지 (또는 제대로 시작되지 않았는지) 알 수 있도록 일종의 폴링을 원한다고 생각됩니다. 서버가 무엇을 의미하는지 알지 못하면 어떻게 보이는지 알기가 어렵습니다. 실제로 준비가되었을 때 표준 출력/에러에 쓸 수 있습니다. 또는 에 응답 할 때까지 무해한 요청을 할 수 있습니다 - 아마 시작 시간이 몇 초가 걸리는 경우, 너는 끝낼 수있어.

EDIT : 일 것입니다.은 "온라인"(두 곳에서 보이는 ...) 코드의 마지막 비트를 별도의 방법으로 이동하려고합니다. "줄 처리"코드에 "시작했습니다"라는 메시지가 표시되면 을 입력 한 다음은 서버를 시작한 것으로보고합니다. 서버 에 2 ~ 3 분 내에 시작된이 없으면 프로세스를 중단하거나 적절한 작업을 중단하도록 타이머를 설정할 수도 있습니다.

+0

더 구체적으로는 Minecraft Server Wrapper - 예, ServerProc은 프로세스입니다. –

+0

@AlexOgden : 그렇습니다. 그렇기 때문에 Minecraft에 대해 아무것도 모르는 상태에서, 언제 "Up"상태인지 어떻게 알 수 있습니까? * 표준 출력/오류 스트림에 아무 것도 쓰지 않습니까? 네가 할 수있는 유용한 no-op 요청이 있니? –

+0

콘솔에서 출력됩니다 - 12:56:39 [INFO] Done (1.836s)! 도움말을 보려면 "help"또는 "?"를 입력하십시오. –

관련 문제