从Threadpool工作线程启动进程(并在需要时等待)

Bry*_*sby 1 c# asynchronous process threadpool

我有一个处理文件传输的应用程序.在某些情况下,我需要启动一些处理文件的前/后处理可执行文件.

所以事件的顺序(简而言之)就像这样:

  1. 工作线程已创建
  2. 工作人员意识到需要在开始传输之前启动预处理可执行文件预处理启动,工作人员等待......如果等待时间过长,则不会发生传输,线程应该优雅地完成
  3. 文件已转移
  4. 工作人员意识到在传输完成后需要启动后处理可执行文件
  5. 后期处理启动,工人不在乎等待

基本上,我不关心在传输发生后后进程可执行文件运行多长时间.因此,如果我从一个然后返回池中的线程启动进程,我是否应该预料到任何问题?


//后期过程

        Process process = null;
        ProcessStartInfo psi = new ProcessStartInfo(executable, args);
        psi.UseShellExecute = true;

        try
        {
            process = Process.Start(psi);
            //The pre-process simply calls Process.WaitForExit(timeout value)
            launched = true;
        }
        catch (InvalidOperationException) { }
        catch (ArgumentException) { }
        catch (System.ComponentModel.Win32Exception) { }
        catch (System.IO.FileNotFoundException) { }
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 5

这完全没有错.

想一想:

  • 将线程返回到线程池实际上并不意味着什么 - 线程仍然存在.
  • 进程不以任何方式依赖于其父线程或进程 - 进程可能会生成子进程然后退出.