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