如何与新进程共享信息(除了命令行参数)
本文关键字:信息 参数 命令行 共享 进程 新进程 | 更新日期: 2023-09-27 18:35:43
我正在用以下方法开始一个新过程:
process.Start();
我知道我可以使用以下方法将字符串传递给它:
process.StartInfo.Arguments = ...
但我想分享的不仅仅是几个简单的字符串——一个字节数组等。我该怎么做?
编辑:这将作为ClickOnce应用程序安装,所以我真的不知道它将安装在文件系统中的哪个位置,我想保持它尽可能简单,以便在卸载后不会保留任何文件。那么我应该把这些数据放在哪里呢?
看看内存映射文件 - 它们允许您在进程之间共享数据。
替代方案是常规文件、注册表、通过套接字进行通信等。
如果数组很小,你可以只对 base64 进行编码。其他选项包括将数据保存到文件或使用命名管道
您可以创建一个临时文件,将所有必需的数据写入其中,并将结果文件名作为命令行参数发送。当第二个应用程序运行时,它将读取文件的内容并将其删除。
如果你可以正确编码字节数组(例如 base64),你可以重定向目标进程的 stdin 并通过它进行流式传输:
http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardinput.aspx
您可能希望使用匿名管道。
匿名管道提供的功能比命名管道少,但也 需要更少的开销。您可以使用匿名管道使 本地计算机上的进程间通信更容易。您不能使用 用于通过网络进行通信的匿名管道。