질문은 주로 Read() 메서드에 있습니다.결함있는 ProcessStartInfo 및 Process.Start? (제대로 디버깅?)
public static void Read(object source, ElapsedEventArgs e)
{
serverID = File.ReadAllText(sidname);
Console.WriteLine("Current ID: " + serverID);
if (serverID != oldserverID && serverID != "default" && serverID != "")
{
ProcessStartInfo servqueued = new ProcessStartInfo();
servqueued.Arguments = ramlimit + " " + spname + " " + sidname + " " + resourcetxt + " " + ramoutput + " " + rootpath + Path.DirectorySeparatorChar + " " + makeserverpath + " " + Logpath + " " + servqueuepath;
servqueued.FileName = fileservepath;
servqueued.WindowStyle = ProcessWindowStyle.Normal;
servqueued.CreateNoWindow = false;
Process queue;
queue = Process.Start(servqueued);
Console.WriteLine("Server process queued with server name: " + serverID);
File.AppendAllLines(logpath, new string[] { DateTime.Now.ToString("HH:mm:ss tt") + ": ", "Server process queued with server name " + serverID });
oldserverID = serverID;
}
}
왜 Process.Start가 무시되는지 확실하지 않습니다. 나머지 부분은 괜찮습니다. 예를 들어 처음에 oldserverID를 넣으면됩니다.
인수는 글로벌 변수는, 이전의 스크립트에서 정의 된
편집 할 수 있습니다. 여기
편집을 참조하는 글로벌 변수입니다. 하드 코딩 경로를주의하십시오.
rootpath = "%USERPROFILE%" + Path.DirectorySeparatorChar +"desktop" + Path.DirectorySeparatorChar + "TerrariaServer" + Path.DirectorySeparatorChar + "filebin";
logpath = rootpath + Path.DirectorySeparatorChar + "fr_log.txt";
servqueuepath = rootpath + Path.DirectorySeparatorChar + "queuecheck.txt";
spname = "serverparams.cmd";
sidname = "serverid.cmd";
resourcetxt = rootpath + Path.DirectorySeparatorChar + "ramcheck.txt";
ramoutput = rootpath + Path.DirectorySeparatorChar + "sysresourceoutput.exe";
makeserverpath = rootpath + Path.DirectorySeparatorChar + "update.bat";
Logpath = rootpath + Path.DirectorySeparatorChar + "fsrv_log.txt";
fileservepath = rootpath + Path.DirectorySeparatorChar + "FileServe.exe";
적절한 디버깅 방법 (아래)의 사용을 통해
UPDATE 문제 소스 .. 해결하고, 타이틀 편집.
이전 문제는 쉘이 호출되는 것이었지만 다른 인스턴스에 대해서는 처리되었습니다. 전체 스크립트는 http://social.msdn.microsoft.com/Forums/vstudio/en-US/2d88cf3b-89b7-4c45-bdfa-ba5ba52acdfa/a-program-that-compares-two-id-and-does에 있습니다. - 뭔가 - 언제든지 - 그들이 - 다른 - 결함 - processstart? 포럼 = csharpgeneral – DaFuze
당신은 그 무시되고 그냥 오류가 아니라고 확신합니까? 또한 ProcessStartInfo는 명령 행에서이 명령문을 실행할 때와 동일한 컨텍스트를 가질 수 없으므로 전체 경로를 제공하고 있습니다. 그러한 다른 변수들을 보는 것이 도움이 될 것입니다. –
아마도 경로는 이전의 두 가지 상황에서의 오류 였기 때문에 단순히 파일 이름이어야하며 같은 디렉토리 (- 아니요, 그렇지 않은 경우)를 공유합니다. 변수가 포함되었습니다. – DaFuze