我正在.Net中编写命令行应用程序.应用程序本身非常简单,但它必须同步连接到Web服务,而Web服务又必须连接到Oracle数据库,而这些部分则喜欢花时间.
是否有一种简单的方法(不将我的app exe分成两部分)继续执行但仍然会执行到命令提示符?
这是Windows,所以没有"&".另外,我无法使用cmd.exe的"start"cmdlet.
如果没有从您的应用程序运行后台进程,我不相信它是可能的.但是,一个相当干净的方法可能是修改你的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"命令行参数并完成了工作,而不是生成一个新实例.设置我"应该"的选项也允许生成的进程打印到现有的控制台.