我正在使用C#中的winform应用程序来启动其他exectuables。 它工作得很好。
但是我注意到它在一些发布之后变慢了。所以我监视线程并发现:
_windowsProcess.BeginOutputReadLine();
_windowsProcess.BeginErrorReadLine();
创建两个线程。这是正常的,因为我使用它来获取事件处理程序的一些信息,因为我需要异步日志。
当我的进程被杀死时(不管它是什么样的),我使用:
_windowsProcess.CancelOutputRead();
_windowsProcess.CancelErrorRead();
我希望这会杀死我的两个额外的线程,但事实并非如此。当我阅读MSDN时,它说它停止处理事件,但如果我再次使用BeginOuputReadLine,我可以重用缓冲区。所以我想这意味着:“我们不会杀死线程”。
我不需要这个,我不想杀死我的流程,它有解决方法吗?
顺便说一句,即使我删除缓冲区:
_windowsProcess.OutputDataReceived -= new DataReceivedEventHandler(OnDataReceived);
_windowsProcess.ErrorDataReceived -= new DataReceivedEventHandler(OnDataReceived);
我也有同样的问题。
提前致谢!