除非启动GUI,否则不会执行main中的代码(双用途winform)

时间:2012-07-13 20:52:45

标签: c# .net winforms

我有一个winform应用程序,我们试图在我们的自动化系统中运行而不启动GUI。不幸的是,当我从命令行调用它时,没有任何逻辑正在执行。以下是Main()

    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {            
        if (!ValidateCommandLineArgs())
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new TestResultForm());
        }
        else
        {
            HeadlessExecution();
            return;
        }
    }

ValidateCommandLineArgs只是检查是否将cmdline=true传递给应用程序,如果没有正常启动GUI。当我在VS2010中调试(在项目属性文件中设置命令行args)时,一切都按照我的预期进行。但是,当我从命令行(具有相同arg的VS的外部)调用它时,HeadlessExecution()被忽略。它当然正在读取arg并进入else语句(GUI未启动,如果你没有传递任何东西或传递cmdline=false),之后我不知道会发生什么但是没有正在执行HeadlessExecution()调用的核心逻辑。

2 个答案:

答案 0 :(得分:1)

你所说的当然是不可能的。它不能输入else语句而不能执行那里找到的代码。当我的代码开始执行不可能的操作时,我开始剥离代码,直到它完成我期望的操作。这有助于找到问题区域。或者我开始添加Trace.WriteLine调用以执行某些代码。您可以在没有调试器的情况下查看跟踪输出,例如DebugView

您可能会看一下this thread,尤其是我的答案,因为我怀疑您的“不工作”定义可能与控制台输出有关。

答案 1 :(得分:0)

只需将隐藏设置设置为隐藏状态,然后让它显示为隐藏