将WinForm应用程序转换为命令行?

时间:2018-05-04 16:09:42

标签: c# .net winforms

有一个非常古老的Winform应用程序(在控制器的事件处理程序中编写了很多域逻辑),我也需要在批处理文件中运行它。所以我添加了一个参数-gui,如果没有gui运行,将所有消息弹出窗口包装到日志中,并将启动过程更改为

if (gui) // Interactive mode
{
    Application.Run(new MyApp(....));
}
else // Running in batch mode
{
    var f = new MyApp(.....);
    f.SomeButton_Click(f, ....);
    f.AnotherButton_Click(f, ....);
    ....
    f.btnOK_Click(f, ...);
    // f.Close(); // Should it be called?
}

在退出之前是否需要调用f.Close();或任何其他方法?我发现系统中有一些进程挂起,从另一个C#应用程序启动后无法杀死。

1 个答案:

答案 0 :(得分:1)

除非f.Show()被调用(假设它继承自System.Windows.Form),否则我认为您不需要致电using(var f = new MyApp(.....)) { f.SomeButton_Click(f, ....); f.AnotherButton_Click(f, ....); .... f.btnOK_Click(f, ...); } 。但是,您可以这样做:

as.POSIXct(df$date, format='%B %d %Y')