创建新流程并传递对象

时间:2015-07-23 01:22:41

标签: c# .net ipc remoting memory-mapped-files

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

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

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

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

那么什么选项最适合创建流程,传递“报表定义”对象和服务器信息,然后允许流程在再次运行之前关闭?

1 个答案:

答案 0 :(得分:0)

我建议您使用命名管道或匿名管道。这些是专门用于进程间通信的,它们非常快。请参阅此处使用匿名管道的一个示例:https://msdn.microsoft.com/en-us/library/bb546102(v=vs.110).aspx