在 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 个本地运行的进程之间轻松共享/访问单个变量(字符串)的主要内容,如果未能解决你的问题,请参考以下文章