清理由BeginOutputReadLine创建的线程

时间:2012-01-11 14:56:00

标签: c# multithreading process

我正在使用C#中的winform应用程序来启动其他exectuables。 它工作得很好。

但是我注意到它在一些发布之后变慢了。所以我监视线程并发现:

_windowsProcess.BeginOutputReadLine();
_windowsProcess.BeginErrorReadLine();

创建两个线程。这是正常的,因为我使用它来获取事件处理程序的一些信息,因为我需要异步日志。

当我的进程被杀死时(不管它是什么样的),我使用:

_windowsProcess.CancelOutputRead();
_windowsProcess.CancelErrorRead();

我希望这会杀死我的两个额外的线程,但事实并非如此。当我阅读MSDN时,它说它停止处理事件,但如果我再次使用BeginOuputReadLine,我可以重用缓冲区。所以我想这意味着:“我们不会杀死线程”。

我不需要这个,我不想杀死我的流程,它有解决方法吗?

顺便说一句,即使我删除缓冲区:

_windowsProcess.OutputDataReceived -= new DataReceivedEventHandler(OnDataReceived);
_windowsProcess.ErrorDataReceived -= new DataReceivedEventHandler(OnDataReceived);

我也有同样的问题。

提前致谢!

0 个答案:

没有答案