在 2 个本地运行的进程之间轻松共享/访问单个变量(字符串)

Posted

技术标签:

【中文标题】在 2 个本地运行的进程之间轻松共享/访问单个变量(字符串)【英文标题】:easily share/access single variable (string) between 2 local running processes 【发布时间】:2014-03-25 23:09:13 【问题描述】:

2 个本地和正在运行的应用程序: 应用程序 #1 定期(timer1 @30sec)将“ping”写入共享/“跨进程”字符串。 应用 #2 定期检查 (timer2 @60sec) 是否共享字符串 == "ping" 并用 "pong" 覆盖它。 由于 timer2 > timer1 App #2 将始终接收/读取字符串为“ping”。如果不是,那么我当然可以假设 App #1 崩溃/挂起并重新启动它。

我知道使用剪贴板可以很容易地做到这一点...

Clipboard.Clear();
Clipboard.SetData("checkthis", "ping");
.
.
.
object clip = Clipboard.GetData("checkthis")
if (clip.ToString() == "ping")

    Clipboard.Clear();
    Clipboard.SetData("checkthis", "pong");

...但我认为使用剪贴板是一个非常糟糕的主意,因为用户很容易把它搞砸。 还有其他像剪贴板一样易于使用的解决方案吗?

【问题讨论】:

你应该使用named pipes。 【参考方案1】:

内存映射文件是一种方法:http://msdn.microsoft.com/en-us/library/vstudio/dd997372(v=vs.100).aspx 将完成这项工作。

命名管道是另一个。

一个普通的文件工作,也是。只需让每个进程在文件中添加FileSystemWatcher 并监听更改即可。

【讨论】:

MMF 正在工作,谢谢。尽管 MS 的代码总是创建 FilNoFoundException,但我使用了:shujaat.net/2010/12/interprocess-messaging-using-memory.html【参考方案2】:

我认为 SO 中的这个线程将帮助您解决问题。祝你好运!

Static members behavior with multiple instance of application - C#

【讨论】:

以上是关于在 2 个本地运行的进程之间轻松共享/访问单个变量(字符串)的主要内容,如果未能解决你的问题,请参考以下文章

线程之间如何调用变量

哪些变量是共享的,而不是在 python 中的进程之间共享?

本地计算机上多个进程的 SQL CE 文件共享冲突

11.1 线程简介

共享内存主/从进程访问单个串口

Windows 进程和 WSL Linux 进程之间的共享内存