繁体   English   中英

如何与新进程共享信息(除了命令行参数)?

[英]How to share information with a new process (besides the command-line arguments)?

我正在开始一个新的过程:

process.Start();

我知道我可以使用以下方式将字符串传递给它:

process.StartInfo.Arguments = ...

但是我不仅要共享几个简单的字符串(字节数组等),还应该共享。我该怎么做?

编辑:这将作为ClickOnce应用程序安装,所以我真的不知道它将在文件系统中安装的位置,并且我想使它尽可能简单,以便在卸载后不会保留任何文件。 那我该把数据放在哪里呢?

看一下内存映射文件 -它们使您可以在进程之间共享数据。

替代方法是常规文件,注册表,通过套接字进行通信等。

如果数组很小,则可以对它进行base64编码。 其他选项包括将数据保存到文件或使用命名管道

您可能要使用匿名管道

匿名管道提供的功能少于命名管道,但也需要较少的开销。 您可以使用匿名管道来简化本地计算机上的进程间通信。 您不能使用匿名管道通过网络进行通信。

您可以创建一个临时文件,将所有必需的数据写入其中,然后将结果文件名作为命令行参数发送。 当第二个应用程序运行时,它将读取文件的内容并将其删除。

如果您可以正确编码字节数组(例如base64),则可以重定向目标进程的stdin并通过它进行流传输:

http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardinput.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM