任何方法都可以立即跳到下一个语句
本文关键字:下一个 语句 方法 都可以 任何 | 更新日期: 2023-09-27 18:04:53
这可能是一个奇怪的问题,但是我有一个从控制台运行的c#程序,现在除了一件事之外,大部分都工作得很好。
在我的程序中,我有一段代码像…
loadFile();
foreach(var x in imgSet)
{
//do whatever
}
我的问题是,我希望我的整个程序是自动化的,并使用任务调度程序运行,我不希望人工交互。程序在控制台中很好地调用loadFile()
方法,但是在它写出该方法的输出之后,用户必须按enter键才能进入foreach循环。我不太知道为什么会这样,我想知道是否有一种方法可以绕过它,使其完全自动化?
将loadFile();
方法更改为不再等待用户按enter键,或者根据参数(因此您可以将其配置为等待或不等待)。
程序执行将逐行运行,尽可能快,没有延迟。如果它在等待用户交互,那是因为程序明确表示应该这样做。
如果是控制台程序,loadFile()
可能调用Console.ReadKey()
或Console.ReadLine()
如果可以更改loadFile()
方法的代码,则可以添加一个参数或重载,从而跳过用户的任何不必要的输入。
您需要查看loadFile方法的内部并找到它等待用户输入的部分
loadFile方法必须做一些等待用户输入的事情。因为等待阻塞了线程,所以在方法调用之后的代码中不能添加任何东西,从而导致线程"跳过"阻塞语句(只要执行指针在等待用户,它就永远不会到达那一行)。您必须进入loadFile并查看是否可以重构它,使用户输入成为可选的(可能依赖于您在命令行中指定的参数开关)。
为什么不简单地为您的控制台应用程序提供一个参数,这样每当您请求用户输入时,如果提供的参数告诉您不要这样做,则跳过该行?
的例子:
protected bool _skipConsoleInput = false;
public static void Main(string[] args)
{
if(args != null && args.Count > 0 && args[0] == "SkipConsoleInputYo")
_skipConsoleInput = true;
loadFile();
GetConsoleInput();
foreach(var x in imgSet) { }
}
protected string GetConsoleInput()
{
if(_skipConsoleInput)
return string.Empty;
return Console.ReadLine();
}
当不提供参数时,必须按enter键。