创建新进程并传递对象

本文关键字:对象 进程 新进程 创建 | 更新日期: 2023-09-27 18:04:22

我有一个批处理应用程序,它处理大量输入以生成一些报告。它读取输入文本文件,生成报表定义列表,然后调用外部代码来运行每个报表。

但是,外部报告生成代码包含某种类型的内存泄漏。当运行单个报告时,它没有问题,但如果运行多个报告,机器将很快耗尽内存。我已经尝试清除报告实例并处理我可以处理的对象,但我发现清除内存的唯一方法是关闭进程。如果我将每个报告作为一个单独的进程运行,这就解决了问题。

所以我要求我的应用程序创建一个新进程,传递报告定义对象和服务器信息,并让该进程生成报告,然后关闭。然后重复下一个定义。我一直在看。net Remoting使用IPCChannel,但是我不知道如何简单地创建进程,传递信息(报告定义和服务器信息),并让它运行。

另一个选项是使用内存映射文件。或者可能使用控制台应用程序,但这将需要序列化我的对象,并传递大量文本和许多参数,这是不优雅的。

那么,对于创建一个进程,传递一个"报告定义"对象和服务器信息,然后允许进程在再次运行之前关闭,哪个选项是最好的呢?

创建新进程并传递对象

我建议您使用命名管道或匿名管道。它们是专门用于进程间通信的,而且速度非常快。这里有一个使用匿名管道的例子:https://msdn.microsoft.com/en-us/library/bb546102(v=vs.110).aspx