在C#中运行应用程序之间共享变量

我正在开发C#两个简单的应用程序,在没有网络要求的同一台本地机器上运行。

第一个应用程序初始化DLL(Class1)并设置变量。 第二个应用程序只读取先前存储的数据。 两个应用程序都实现了相同的Class1。

码:

  • DLL(Class1):

    public class Class1 { private string variableName; public string MyProperty { get { return variableName; } set { variableName = value; } } } 
  • 申请A:

     class Program { static void Main(string[] args) { Class1 class1 = new Class1(); string localReadVariable = Console.ReadLine(); class1.MyProperty = localReadVariable; } } 
  • 申请B:

     class Program { static void Main(string[] args) { ClassLibraryA.Class1 localClass = new ClassLibraryA.Class1(); string z = localClass.MyProperty; Console.WriteLine(z); } } 

我的问题是我不知道如何从另一个线程读取变量。

应用程序B必须读取应用程序B设置的“variableName”

谢谢

您需要某种机制来在应用程序之间进行通信。

这可以通过注册表,文件, 内存映射文件等…

如果两个应用程序都需要写入,则需要在代码中添加同步逻辑。

应用程序B没有简单的方法来读取在应用程序A中创建的数据。每个应用程序都有自己的地址空间,因此不知道其他应用程序是否存在。

但是,有办法做到这一点!

看一个方法的这个问题 ..

我成功地使用了两种方法:

  1. 使用数据库表包含公共数据。 如果在事务中包装对它的调用,那么您还可以防止并发问题。

  2. 使用PersistentDictionary存储由互斥锁保护的数据。 您必须具有一些进程间锁定,因为PersistentDictionary一次只能由一个进程打开。

您可以使用.net Remoting在两个应用程序之间进行通信。
远程处理也不需要网络地址进行通信。