【问题标题】:system ("pause") in C# won't work. Alternatives?C# 中的系统(“暂停”)将不起作用。备择方案?
【发布时间】:2014-04-25 12:04:09
【问题描述】:

我正在构建一个用于显示 Smartgraph3 读数的程序。每当我开始调试时,命令行都会打开,但它会立即消失。我知道 ctrl + f5 有效,但我正在寻找一种解决方案,我不必输入相同的命令来防止它消失。

我用过 System("pause");但它一直在系统下出现一条蓝线,并且在错误列表中显示“系统”是一个“命名空间”,但它的使用就像一个“变量”。有谁知道怎么回事?

另外,我听说 System("pause") 不应该被使用,那么有人有同样有效的替代方法吗?

这是我的代码的副本。谢谢。

    using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using Infowerk.SmartGraph3.SmartGraph3API;
//using CSTestClient.SmartGraph;

namespace CSTestClient
{
    class Program
    {
        static void Main(string[] args)
        {
            TestAPI();
        }



        static void TestAPI()
        {
            System.ServiceModel.Channels.Binding service_binding = new BasicHttpBinding();
            EndpointAddress endpoint_address = new EndpointAddress("http://localhost:8000/SmartGraph3API/APIV01");


            SmartGraph3APIClient client = new SmartGraph3APIClient(service_binding, endpoint_address);

            List<SG3APIDeviceIdentification> device_list = client.GetDeviceList();

            foreach (SG3APIDeviceIdentification device_identification in device_list)
            {
                Console.WriteLine("device id: {0}", device_identification.DeviceId);
                System("pause");
            }
        }

    }
}

【问题讨论】:

  • 两件事:(1) 不是System("pause"),而是system("pause")(小写!),(2) 它可以在C/C++ 中使用,而且您使用的是C#,这是一个不同的平台!不仅仅是“他们说它不同,但我的程序仍然有效”,就像它在 C 和 C++ 中一样。 C# 与它们完全不同。
  • 你应该质疑你的动机。您知道 CTRL+F5 有效,因此您已经有了“正确”的解决方案。为什么还希望它在调试模式下工作?不要在程序中人为地添加暂停(这将改变最终用户的预期行为),而是使用断点,这是在调试会话期间获得此行为的预期方式。
  • 另外,您的问题非常令人困惑 - 您的标题是 C#,您的标签是 C++,您的评论是 C++,但是您的代码似乎是 C#,并且您已经接受了 C# 的答案。你到处都是 - 实际上预期的语言是什么?
  • 在标题中编辑 C++ 并没有澄清任何问题,因为您的代码和接受的答案不是 C++。我现在认为这实际上是一个 C++/CLI 问题(我自己对 C# 不太熟悉,一开始我没有发现)。无论哪种方式,它都不是 C++,应该适当地标记(使用 C++-CLI 标记)。
  • @JBentley:不,它不是 C++/CLI,这绝对是简单的 C#。我认为这个问题的作者根本没有“感觉不同”。

标签: c# visual-studio


【解决方案1】:

继续并简单地使用:

Console.ReadKey();

【讨论】:

    【解决方案2】:

    Main() 的右大括号上设置断点。或者使用 IDE 将控制台输出流式传输到进程退出后仍然存在的调试窗口(例如,Eclipse,我假设基本上除了 VS 之外的任何东西)。没有理由强迫每个真正想要运行您的程序的人以正常的方式调用它,例如:

    :; ./myProgram.exe < /dev/null; exit $?
    .\myProgram.exe < NUL
    

    https://stackoverflow.com/a/20487235

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-14
      • 1970-01-01
      相关资源
      最近更新 更多