进程间通信:命名管道或状态文件

时间:2011-08-18 18:09:26

标签: c# .net vb.net

我正在构建一个由Web服务组成的工具,该服务将在特定时间运行命令行工具。平均而言,将同时运行15-20个CL工具。每个CL工具平均运行时间不超过0.5-1分钟。网络服务需要能够每2-3秒左右检查一次CL的状态。

我对如何做到这一点有一些建议;命名管道看起来像最好的“技术”解决方案。但是,我想知道与简单的非常小的文本“状态”文件进行通信是否会更好,更简单,更少错误风险。我更喜欢最资源友好的解决方案。

请建议。

3 个答案:

答案 0 :(得分:0)

之前我做过类似的事情,这就是我做的事情。

我通过将ProcessStartInfo.RedirectStandardOutput设置为true来启动命令行流程。然后我开始通过执行以下命令来监听命令行进程的输出:

process.OutputDataReceived += dataReceivedEventHandler;
process.BeginOutputReadLine();

然后在我的dataReceivedEventHandler中,我解析DataReceivedEventArgs.Data以查看我的控制台应用程序是否向我发送了一条以我创建的标记开头的“消息”(例如:“[ServerProgress] 10”)。

基本上,应用程序通过控制台输出进行通信。不优雅,但它为我做了工作。

希望这有帮助。

答案 1 :(得分:0)

对于你的情况,状态检查 - 不是那里的巨大足迹,我会随时使用命名管道。使用内存>>在这里使用硬盘。

答案 2 :(得分:0)

命名管道会更好。您可能会遇到尝试同时访问小文本文件的两个进程的访问问题。