【问题标题】:Is it possible to make a .net console application return control while a thread is still executing?是否可以在线程仍在执行时使 .net 控制台应用程序返回控制?
【发布时间】:2013-09-09 18:17:04
【问题描述】:
假设我有一个在线程上执行一些长时间运行的代码的 .net 控制台应用程序。
我想让控制台应用程序在线程仍在运行时终止。具体来说,我想从批处理文件或其他进程启动控制台应用程序,这将启动长时间运行的进程,然后在长时间运行的线程执行时继续执行其他操作。
如果不可能,我知道的唯一解决方法是让服务程序托管长时间运行的线程。
是否可以像我描述的那样让控制台应用程序返回控件?
【问题讨论】:
标签:
.net
multithreading
console-application
long-running-processes
【解决方案1】:
线程在托管它们的进程的上下文中运行。因此,如果您终止控制台或“返回控制”,您可以这样做,您的线程将无法完成(您的线程更有可能阻止您的应用程序退出,这也是您不想要的)。
您可以模拟使用启动命令将控制权返回给批处理文件/shell:
c:\>start myconsole
这将创建一个新的命令窗口,您的进程在其中同步运行,但您启动它的批处理文件不必等待。
您还可以通过生成子进程来“模拟”它。见Process.Start() 的想法。