-1

Im trying to change my application to a console application. I want it to work so that if one parameter is passed method 1 is executed and if no parameter is passed method 2 is executed.

From the code I have, when I try run it nothing happens.

Here is my main code:

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

    }

Any ideas?

Thanks

4

6 回答 6

4

Application.Run启动一个消息循环,直到您的应用程序关闭(收到退出消息)。因此Application.Run(),在退出消息之前不会执行任何操作。

问题是你是否真的需要那些引用 Application. 如果您没有 Window,则消息循环很可能是多余的。如果您想对 Windows 消息进行操作,则可能需要消息循环。但是,您将在单独的线程中运行此循环。

于 2013-06-13T15:42:43.993 回答
0

如果你调试它,你会发现真正的问题,比如args != null在行中放置一个断点,看看里面到底有什么args

但是,这可能是因为args它永远不会为空,所以让它:

if (args.Any())

(编辑:JeffRSon还发现你的代码有另一个问题,所以他的答案也是正确的,但是,args一旦你解决了原始问题,你就会遇到我描述的问题。所以我也会在这里保留我的答案。

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

于 2013-06-13T15:41:40.637 回答
0

删除 main 方法中的前三行。Output type如果Console Application 设置入口点到您的方法,请检查项目属性

于 2013-06-13T15:46:41.367 回答
0

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

于 2013-06-13T15:48:41.563 回答
0
if (args.Length > 0)
        {
            runTestCases.RunTestCaseForSelectedField(args[0]);
        }
        else
        {
            //runTestCases.RunTestCaseForAllFields();
            Console.WriteLine("No Parameter");
        }

这就是我现在所拥有的,每当我运行它时,它都会运行 else 语句。为什么我的参数没有被拾取?

于 2013-06-13T17:20:45.893 回答
0

控制台应用程序中不需要与应用程序相关的代码,它仅在 Windows 应用程序(wpf)中使用,其他人所说的“args”也是有效的。

于 2013-06-13T16:02:34.507 回答