Вопрос в основном заключается в методе 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 в начале.
EDIT
аргументы являются глобальными переменными, и определены ранее в сценарии.
EDIT
Вот глобальные переменные, на которые ссылается. Обратите внимание на жесткое кодирование пути.
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";
ОБНОВЛЕНИЕ
Благодаря использованию надлежащих методов отладки (ниже), источник проблема была решена .., название изм.
Старая проблема заключалась в вызове оболочки, но об этом позаботились .. для другого экземпляра. Весь скрипт находится здесь http://social.msdn.microsoft.com/Forums/vstudio/en-US/2d88cf3b-89b7-4c45-bdfa-ba5ba52acdfa/a-program-that-compares-two-id-and-does -something-when-they-are-different-faulty-processstart? forum = csharpgeneral – DaFuze
Вы уверены, что его игнорируют, а не просто ошибки? Кроме того, ProcessStartInfo может не иметь того же контекста, что и при его запуске из командной строки, так что вы предоставляете полный путь. Наблюдение этих других переменных поможет. –
Возможно, путь должен быть просто именем файла, поскольку это была ошибка в двух предыдущих обстоятельствах, и они имеют один и тот же каталог (- нет, это не так). Переменные включены. – DaFuze