如何使无窗口/命令行应用程序返回但继续在后台执行?

tia*_*014 3 .net c# vb.net

我正在.Net中编写命令行应用程序.应用程序本身非常简单,但它必须同步连接到Web服务,而Web服务又必须连接到Oracle数据库,而这些部分则喜欢花时间.

是否有一种简单的方法(不将我的app exe分成两部分)继续执行但仍然会执行到命令提示符?

这是Windows,所以没有"&".另外,我无法使用cmd.exe的"start"cmdlet.

Kaz*_*zar 6

如果没有从您的应用程序运行后台进程,我不相信它是可能的.但是,一个相当干净的方法可能是修改你的Main方法,如下所示:

static void Main(string[] args)
{
    if (args.Length > 0 && args[0] == "run")
    {
        //actually run your application here
    }
    else
    {
        //create another instance of this process
        ProcessStartInfo info = new ProcessStartInfo();
        info.FileName = Assembly.GetExecutingAssembly().Location;
        info.Arguments = "run";
        info.UseShellExecute = false;
        info.CreateNoWindow = true;

        Process.Start(info);
    }
}
Run Code Online (Sandbox Code Playgroud)

无论如何,这样的东西,只是把它写在我的头顶.基本上,它创建了同一个可执行文件的新实例,但是新进程看到了"run"命令行参数并完成了工作,而不是生成一个新实例.设置我"应该"的选项也允许生成的进程打印到现有的控制台.