如何在两个c#项目之间共享变量

我想在两个不同的项目之间使用共享变量,我想每次在c#中更新该变量? 我使用dll文件来共享变量,但在更新变量时它没有用。 请帮忙。

public static class Signals { public static bool Admin_Logged_In; public static bool get_Admin_Flag() { return Admin_Logged_In; } public static bool get_Busy_Flag() { return Back_End_Busy; } } 

我在DLL文件中附加了上面的类并引用了两个不同的项目,然后尝试更新一个项目中的值并期望在第二个项目中获得更新值。 但它没有提供更新的价值。

有关DLL的MS文档说明:“默认情况下,使用DLL的每个进程都有自己的所有DLL全局和静态变量的实例。”

看看这个给出一些解决方法: http : //msdn.microsoft.com/en-us/library/h90dkhs0( v = vs.80).aspx

顺便说一句,我会使用网络通信分享这些值。

如果您有两个需要通信的进程(如两个.exe文件),则称为进程间通信 。 确实没有简单的解释方法,因为有一百万种不同的方法可以解决这个问题。

  • 您可以写入文件并阅读它们。
  • 您可以通过网络连接进程。
  • 您可以编写和读取公共数据库。
  • 您可以使用消息队列。
  • 您可以使用命名管道。
  • 可能还有另外十几种我错过的方式……

您需要重新研究它们并找到最适合您问题的解决方案。

您正试图通过同一程序中的两个项目访问静态成员吗​​? 不是两个单独的程序。

如果是这样,我认为您所遇到的误解是在值类型和引用类型之间。 您可以从两个项目更新共享变量,但这些值不会传播。 我会用一个单独的课来演示,而不是你正在使用的两个。

 static class Test { public static bool logged_in; } Test.logged_in = true; var t = Test.logged_in; Console.WriteLine(l); // prints true Test.logged_in = false; var f = Test.logged_in; Console.WriteLine(f); // prints false Console.WriteLine(t); // prints true 

注意更改静态成员时t的值是如何更新的? 那是因为bool是值类型,而不是引用类型。 因此,当您询问该值时,您会收到该值的副本,而不是对该变量的引用。

如果静态成员是引用类型,则可以观察到不同的行为:

 static class Test { public static string logged_in; } Test.logged_in = "true"; var t = Test.logged_in; Console.WriteLine(l); // prints "true" Test.logged_in = "false"; var f = Test.logged_in; Console.WriteLine(f); // prints "false" Console.WriteLine(t); // prints "false" 

怎么样链接文件(点击项目 – >添加 – >现有项目 – >(选择you.cs) – >添加为链接)?