如何暂停C#控制台应用程序(仅当由用户运行时)

如何暂停C#控制台应用程序(仅当由用户运行时),c#,C#,在用户运行C#console应用程序时,如何仅暂停该应用程序 我在堆栈溢出上搜索过类似的问题,建议学习正确调试,使用readline等,但没有一个涉及到您的进程可能由需要直接运行的自动化系统运行的实例(即,不暂停,以便让用户读取屏幕) 如何确定控制台是以交互方式运行还是通过脚本运行 如果这是linux系统上的bash,我可以做如下操作 您需要检查是否有人以交互用户身份登录,但这主要是用于服务。一些“自动”系统,因为你提到这样一个术语,可能是假装一个登录用户 以下是一些建议: 可能最简单的方法(

在用户运行C#console应用程序时,如何仅暂停该应用程序

我在堆栈溢出上搜索过类似的问题,建议学习正确调试,使用readline等,但没有一个涉及到您的进程可能由需要直接运行的自动化系统运行的实例(即,不暂停,以便让用户读取屏幕)

如何确定控制台是以交互方式运行还是通过脚本运行

如果这是linux系统上的bash,我可以做如下操作


您需要检查是否有人以交互用户身份登录,但这主要是用于服务。一些“自动”系统,因为你提到这样一个术语,可能是假装一个登录用户

以下是一些建议:


可能最简单的方法(特别是如果您不想依赖WMI API)是通过p/Invoke调用枚举用户会话,如下所示:

您需要检查是否有人以交互用户身份登录,但这主要用于服务。一些“自动”系统,因为你提到这样一个术语,可能是假装一个登录用户

以下是一些建议:


可能最简单的方法(特别是如果您不想依赖WMI API)是通过p/Invoke调用枚举用户会话,如下所示:

使用一些命令行参数将是最简单的解决方案。例如,如果程序使用命令行参数“-automatic”运行,它可以不停止运行。如果没有这样的参数,程序将以交互模式运行,并期望用户输入


这是许多命令行实用程序使用的标准方法。

使用一些命令行参数将是最简单的解决方案。例如,如果程序使用命令行参数“-automatic”运行,它可以不停止运行。如果没有这样的参数,程序将以交互模式运行,并期望用户输入


这是许多命令行实用程序使用的标准方法。

控制台。如果控制台应用程序未以交互方式运行,OpenStandardInput(1)
将返回Stream.Null

    private static void pause()
    {
        if (Console.OpenStandardInput(1) != Stream.Null)
        {
            Console.Out.WriteLine("Press any key to continue");
            Console.ReadKey();
        }
    }

Console.OpenStandardInput(1)
将返回Stream.Null(如果控制台应用程序未以交互方式运行)

    private static void pause()
    {
        if (Console.OpenStandardInput(1) != Stream.Null)
        {
            Console.Out.WriteLine("Press any key to continue");
            Console.ReadKey();
        }
    }

“由一个需要直接运行的自动化系统运行”是什么意思?例如,后台的批处理脚本,另一个进程,而不是由用户在控制台中直接运行。“需要直接运行”是什么意思?为什么不请求只有用户才能提供的输入?你是用户吗?例如,它不会永远停止等待输入吗?什么是“由一个需要直接运行的自动化系统运行”的意思?例如,后台的批处理脚本,另一个进程,而不是由用户在控制台中直接运行。什么是“需要直接运行”是什么意思?你为什么不要求只有用户才能提供的输入?你是用户吗?例如,它会不会永远停止等待输入?