假设我有一个.net控制台应用程序,它在一个线程上执行一些长时间运行的代码。
我想在线程仍在运行时使控制台应用程序终止。具体来说,我想从批处理文件或其他进程启动控制台应用程序,这将启动长时间运行的进程,然后在长时间运行的线程执行时继续执行其他操作。
如果不可能,我知道的唯一解决方法是让服务程序托管长期运行的线程。
是否可以像我描述的那样制作控制台应用程序返回控件?
答案 0 :(得分:2)
线程在托管它们的进程的上下文中运行。因此,如果你终止你的控制台或“返回控制”,你的线程将无法完成(更有可能你的线程会阻止你的应用程序退出,这也是你不想要的)。
您可以使用start命令模拟将控制权返回给批处理文件/ shell:
c:\>start myconsole
这将创建一个新的命令窗口,您的进程将在该窗口中同步运行,但是您启动它的批处理文件将不必等待。
您还可以通过生成子进程来“模拟”它。请参阅Process.Start()了解相关信息。