我有一个处理文件传输的应用程序。在某些情况下,我需要启动一些处理文件的前/后处理可执行文件。
所以事件的顺序(简而言之)是这样的:
- 创建工作线程
- Worker 意识到它需要在开始传输之前启动一个预处理可执行文件 启动预处理,工作人员等待...如果等待时间过长,传输将不会发生,线程应该正常结束
- 文件已传输
- Worker 意识到它需要在传输完成后启动一个后处理可执行文件
- 启动后处理,worker 不关心等待
基本上,我不关心传输发生后后处理可执行文件运行多长时间。因此,如果我从一个线程启动进程然后返回到池中,我是否应该预见到任何问题?
//后处理
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) { }
最佳答案
这完全没有错。
想想看:
- 将线程返回到线程池实际上没有任何意义 - 线程仍然存在。
- 进程不以任何方式依赖于它们的父线程或进程 - 进程可以生成子进程然后退出。
关于c# - 从 Threadpool 工作线程启动进程(并在需要时等待),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3260708/