c#控制台应用程序无法运行

本文关键字:运行 应用程序 控制台 | 更新日期: 2023-09-27 18:18:09

我试图将我的应用程序更改为控制台应用程序。我想让它工作,如果一个参数传递方法1被执行,如果没有参数传递方法2被执行。

从我的代码,当我试着运行它什么都没有发生。

下面是我的主代码:
[STAThread]
    static void Main(string[] args)
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run();
        RunTestCases runTestCases = new RunTestCases();
        DataIntegration dataIntegration = new DataIntegration();

        if (args != null)
        {           
            runTestCases.RunTestCaseForSelectedField(args);
        }
        else
        {
            runTestCases.RunTestCaseForAllFields();
        }
    }

任何想法?

谢谢

c#控制台应用程序无法运行

Application.Run启动一个消息循环,直到你的应用程序关闭(接收退出消息)。因此,在Application.Run()被执行之后,什么也不会执行,直到退出消息。

问题是你是否真的需要那些引用Application的行。如果没有Window,那么消息循环很可能是多余的。如果要处理windows消息,则可能需要消息循环。但是,您将在一个单独的线程中运行此循环。

删除main方法的前三行。如果Output typeConsole Application,请检查工程属性为方法设置入口点

我没有代表评论,但我看到的一个问题是,你的第一个条件将始终为真,因为没有命令行输入的args是一个零长度字符串数组,而不是一个空值。您希望检查args中的内容,而不是假设它为空。

如果您调试它,就会发现真正的问题,例如在args != null行中放置一个断点,并查看 args内部的内容。

然而,这可能是因为args从来不是空的,所以让它:

if (args.Any())

(编辑:) JeffRSon还抓住了你的代码的另一个错误,所以他的答案也是正确的,但是,一旦你修复了原来的问题,你就会遇到我所描述的args问题。所以我也把我的答案留在这里。

当启动没有参数的控制台应用程序时,args将是一个空数组,不是一个空值)

与应用程序相关的代码在控制台应用程序中是不需要的,它只在windows应用程序(wpf)中使用,而且其他人告诉'args'是有效的

if (args.Length > 0)
        {
            runTestCases.RunTestCaseForSelectedField(args[0]);
        }
        else
        {
            //runTestCases.RunTestCaseForAllFields();
            Console.WriteLine("No Parameter");
        }

这就是我现在的代码,无论何时运行它,它都会运行else语句。为什么我的参数没有被接收?