任何方法都可以立即跳到下一个语句

本文关键字:下一个 语句 方法 都可以 任何 | 更新日期: 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键。