带有WinForm和控制台接口的.Net程序

Joh*_*tos 4 .net c# vb.net console winforms

我有一个简单的问题,我确信它已被回答,但我似乎无法找到我正在寻找的解决方案.

我的基本问题是我在.Net中创建了一个控制台应用程序,它每天在任务调度程序上自动运行,但现在我的客户端还需要一个基于Windows窗体的界面,他们可以使用它来运行特殊的运行(他们使用GUI指定一些参数 - 例如特定日期等 - 以使程序运行有点不同).

我想这样做的方法是将我的控制台应用程序转换为WinForm解决方案,并包含命令行参数,以便我希望它作为默认的原始控制台应用程序运行,但我认为这不是正确的方法,因为它仍然会涉及表单加载.

我的另一个想法是将"引擎"部分转换为DLL并制作2个可执行文件 - 一个是控制台应用程序,另一个是winforms应用程序,但我不确定这是否正确/可能导致更多维护.

这样做的正确方法是什么?

我在VB中写这个,但如果对你来说更容易,我对C#解决方案同样感到满意.

谢谢!!

Ree*_*sey 12

通常,我会将逻辑分成一个库,然后创建一个简单的控制台应用程序一个简单的Forms应用程序来调用库中的逻辑.

然后,您可以单独分发这些内容并按预期使用它们,而无需重复代码.


Gus*_*man 8

您可以修改您的Program.cs以接受参数,然后如果已经将一些args传递给您的应用程序,并从main退出,则启动您的主窗体,如下所示:

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {

        if (ProcessCommandLine(args))
            return;

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }

    static bool ProcessCommandLine(string[] args)
    {
         //Process it, if some has been processed return true, else return false
    }
}
Run Code Online (Sandbox Code Playgroud)