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

时间:2017-11-14 05:09:45

标签: c#

如何在用户运行时暂停C#控制台应用

我在堆栈溢出上搜索了类似的问题,建议学习正确调试,使用readline等,但它们都不包括你的进程可能由需要继续直接过去的自动化系统运行的实例(即不要暂停,让用户阅读屏幕)。

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

如果这是linux系统上的bash,我可以做类似

的事情

https://www.gnu.org/software/bash/manual/html_node/Is-this-Shell-Interactive_003f.html

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

您需要检查某人是否以交互式用户身份登录,但这主要用于服务。一些"自动化"系统,因为你提到这样一个术语可能是伪造登录用户。

以下是一些建议: Check if no user is currently logged on to Windows

可能最简单的方法(特别是如果你不想依赖WMI API)是通过P / Invoke调用来枚举用户会话,如下所示:http://www.pinvoke.net/default.aspx/wtsapi32/WTSEnumerateSessions.html

答案 2 :(得分:0)

如果控制台应用程序没有以交互方式运行,

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();
        }
    }