在线程仍在执行时,是否可以使.net控制台应用程序返回控制?

时间:2013-09-09 18:17:05

标签: .net multithreading console-application long-running-processes

假设我有一个.net控制台应用程序,它在一个线程上执行一些长时间运行的代码。

我想在线程仍在运行时使控制台应用程序终止。具体来说,我想从批处理文件或其他进程启动控制台应用程序,这将启动长时间运行的进程,然后在长时间运行的线程执行时继续执行其他操作。

如果不可能,我知道的唯一解决方法是让服务程序托管长期运行的线程。

是否可以像我描述的那样制作控制台应用程序返回控件?

1 个答案:

答案 0 :(得分:2)

线程在托管它们的进程的上下文中运行。因此,如果你终止你的控制台或“返回控制”,你的线程将无法完成(更有可能你的线程会阻止你的应用程序退出,这也是你不想要的)。

您可以使用start命令模拟将控制权返回给批处理文件/ shell:

c:\>start myconsole

这将创建一个新的命令窗口,您的进程将在该窗口中同步运行,但是您启动它的批处理文件将不必等待。

您还可以通过生成子进程来“模拟”它。请参阅Process.Start()了解相关信息。