我正在构建一个由Webservice组成的工具,它将在特定时间运行命令行工具。平均会有15-20个CL工具同时运行。每个CL工具平均运行时间不超过0.5-1分钟。webservice需要能够每2-3秒左右检查一次每个CL的状态。
我有一些关于如何做到这一点的建议;命名管道看起来是最好的“技术”解决方案。然而,我想知道与简单的非常小的文本“状态”文件通信是否会是一种更好的、更简单的、错误风险更小的方式。我更喜欢对资源最友好的解决方案。
敬请指教。
发布于 2011-08-23 13:37:49
命名管道会更好。当两个进程尝试一次访问这个小文本文件时,您可能会遇到访问问题。
发布于 2011-08-19 02:24:37
我以前做过类似的事情,下面是我所做的。
我通过将ProcessStartInfo.RedirectStandardOutput设置为true来启动命令行进程。然后,通过执行以下操作开始监听命令行进程的输出:
process.OutputDataReceived += dataReceivedEventHandler;
process.BeginOutputReadLine();然后,在我的dataReceivedEventHandler中,我解析DataReceivedEventArgs.Data以查看控制台应用程序是否向我发送了以我创建的标记(例如:"ServerProgress10")开头的“消息”。
因此,基本上,应用程序通过控制台输出进行通信。不是很优雅,但它为我做了这件事。
希望这能有所帮助。
发布于 2011-08-19 02:25:38
对于你的情况,状态检查--这不是很大的占用空间,我随时都会使用命名管道。在这里使用使用硬盘的内存>>。
https://stackoverflow.com/questions/7112027
复制相似问题