【发布时间】:2012-06-20 23:28:07
【问题描述】:
我有一个控制台应用程序,它使用许多命令行开关来控制各种方法。每个命令行开关都由一个 for 循环中的 switch 语句处理,该循环遍历每个 args。
for (int x = 0; x < args.Length; x++)
{
switch (args[x])
{
...
}
}
这非常适合我的需要,但是我需要添加一个 --loop 开关,它会根据 --set-timeout 开关指定的超时时间来无限期循环前面的参数。
我目前的代码是:
switch (args[x])
{
case "--set-timeout-5m":
timeout = 300000;
System.Threading.Thread.Sleep(timeout);
break;
....
case "--loop":
x = 0;
break;
}
问题是设置 x 不会导致 for 循环从 args 开始继续。它只是坐在那里。
我希望 x 具有范围,因为代码在 for 循环中,并且在 Visual Studio 中不会生成错误。我也期待 break 语句打破案例并将 x 传递给 for 循环。
谁能解释为什么它不起作用或发布解决方法?
【问题讨论】:
-
您的“设置超时”没有设置超时,它导致循环立即休眠 5 分钟。这就是你的意思吗?
-
也就是说,设置的超时是使代码暂停n分钟,--loop开关应该控制循环。用例类似于 program.exe -i --set-timeout-5m --loop
-
坐在那里是什么意思?尝试调试,看看你的代码在中断时去哪里。
-
因此,对于您评论中的参数,您希望它循环 5 分钟,然后停止?目前它会等待 5 分钟,然后无限循环。
-
它应该可以工作。你确定你的“--loop”案例被击中了吗?尝试在“x = 0;”上放置一个断点。
标签: c#