有问题的ProcessStartInfo&的Process.Start? (正确调试?)

时间:2013-10-10 23:25:39

标签: c# process.start processstartinfo

问题主要在于Read()方法。

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";

更新

通过使用适当的调试方法(如下),问题来源已解决,标题已编辑。

1 个答案:

答案 0 :(得分:0)

你确定没有一个可以吞下异常的try / catch子句吗?

Process.Start无法正在"忽略" 。代码要么没有达到它,要么执行它,但不是你想要的那样。

我提出了一些建议,在方法的第一行设置一个断点,然后逐步完成其余部分并观察正在发生的事情 - 特别是在本地/观察窗口。另一件事是,在完成时中断并使用intellisense来查看框架或代码中是否存在任何其他吞下的异常。