【问题标题】:C# programs "run twice", both through the executable and through cmdC# 程序“运行两次”,通过可执行文件和 cmd
【发布时间】:2014-09-22 02:02:28
【问题描述】:

这是我的代码仅供参考,尽管我很确定这不是导致问题的代码。我已经在其他机器上运行了相同的代码,没有出现问题。

using System;

public class Program
{

public static void Main()
{
Console.WriteLine("Body-mass-index Calculator");

Console.Write("Enter a weight (in kg): ");
double weight = Double.Parse(Console.ReadLine());

Console.Write("Enter a height (in cm): ");
double heightcm = Double.Parse(Console.ReadLine());

double heightm = heightcm/100;

double bmi = (weight/heightm/heightm);
double bmiformatted = Math.Round(bmi, 2);

Console.WriteLine("Resulting body mass index: {0}", bmiformatted);

}
}

通过可执行文件运行时,会打开 cmd 窗口,我输入它要求我输入的内容,然后显示计算出的 bmi 值。然后按回车键,cmd 窗口关闭。到现在为止还挺好。但随后会打开第二个 cmd 窗口,与第一个窗口相同,再次提示我输入值。我会像第一次那样做,这次会永远关闭。

如果我选择不输入提示输入的值,而是关闭窗口,它将再次打开第二个窗口。

通过 cmd 运行有点不同。该程序将在一个新窗口中运行,一旦该窗口完成,它就会关闭,程序会从原来的 cmd 窗口再次运行。

如果有任何其他信息有助于解决此问题,请告诉我。谢谢。

【问题讨论】:

  • 不是代码。你可以从命令行运行它,使用它的全名(包括.exe),看看会发生什么?也许你有一个流氓 .bat 文件..
  • "通过 cmd 运行有点不同。程序将在一个新窗口中运行,一旦完成,它就会关闭,程序从原始 cmd 窗口再次运行。" .bat 的东西可能值得一试,我记得在我的大学课程中遵循了一些复杂的设置说明。
  • 是的,我读到了。你是以program.exe 运行它,还是只是program
  • 我用包含的 .exe 运行它。
  • 要检查的另一件事是您在 Visual Studio 中的“调试”选项卡上的项目属性:是否设置为“启动项目”而不是“启动外部程序”?

标签: c# windows cmd


【解决方案1】:

在我取消选中 avast 中的一个选项之前,我也遇到了这个问题!杀毒软件。

检查您是否有avast!安装了防病毒软件。如果是这样,请单击左侧的齿轮图标,设置 -> 防病毒 -> 取消选中“启用 DeepScreen”。

如果可行,感谢在此处发布该解决方案(带屏幕截图)的冒险家OK:

Visual Studio 2013 runs project twice

【讨论】:

    【解决方案2】:

    您也可以在调试器中启动。

    windbg 或 ntsd(ntsd 是一个控制台程序,可能已安装)。两者都来自 Debugging Tools For Windows。

    下载并安装 Windows 调试工具

    http://msdn.microsoft.com/en-us/windows/hardware/hh852363

    安装 Windows SDK,但只需选择调试工具。

    在**C:**中创建一个名为Symbols的文件夹

    启动Windbg文件菜单-符号文件路径并输入

    srv*C:\symbols*http://msdl.microsoft.com/download/symbols
    

    然后

    windbg -o -g -G c:\windows\system32\cmd.exe /k batfile.bat
    

    您可以按 F12 停止它,kb 将显示调用堆栈(g 继续程序,pct 运行到下一个函数调用)。如果有错误,它也会停止并显示它们。

    键入lm 列出加载的模块,键入x *!* 列出符号,键入bp symbolname 设置断点

    如果在 VB6 中编程,则此环境变量 link=/pdb:none 将符号存储在 dll 中,而不是单独的文件中。确保在没有优化的情况下编译程序并勾选 Create Symbolic Debug Info 框。两者都在项目属性的编译选项卡上。

    CoClassSyms (microsoft.com/msj/0399/hood/hood0399.aspx) 也可以从类型库中生成符号。

    .

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-03
      • 1970-01-01
      • 1970-01-01
      • 2014-04-18
      • 2022-01-12
      相关资源
      最近更新 更多