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

C# 如何在两个c项目之间共享变量,c#,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

我想在两个不同的项目之间使用共享变量,我想在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文件中附加了上述类,并在两个不同的项目中引用,然后尝试在一个项目中更新值,并期望在第二个项目中获得更新值。但它并没有提供更新的价值

链接文件如何单击project->add->existing item->select you.cs->add as link?

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

如果是这样的话,我认为您对值类型和引用类型之间存在误解。您可以从两个项目中更新共享变量,但这些值不会传播。我将使用一个类来演示,而不是使用两个

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"

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

看看这一点,它提供了一些解决方法:


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

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

您可以写入文件并读取它们。 您可以通过网络连接进程。 您可以写入和读取公共数据库。 您可以使用消息队列。 可以使用命名管道。 可能还有十几条我错过的路。。。
您需要重新搜索它们,并找到最适合您的问题的解决方案。

您可以共享一些代码吗?为什么要使用变量?档案怎么样?或者数据库。我经常更新这个变量,所以我想对于单个变量,为什么每次都要打开和关闭一个文件。这两个不同的项目是同一个可执行文件的一部分吗?也就是说,是否有一个可执行文件碰巧引用了两个项目的dll,或者其中一个是碰巧引用了另一个项目的可执行文件?程序是否可以同时运行多个副本?如果不同的机器上有多个副本怎么办?您需要更精确地指定共享变量的含义,以及项目之间的关联方式和执行方式。实际上,有两个不同的exe是互斥的,这是由该共享变量决定的。我也尝试过你说的是对的。。但它仍然不起作用。@USER123,请你下定决心,你是否有两个独立的进程,就像你原来的问题一样,根据这个评论,或者没有?我有两个独立的processexe,我的意思是指一个普通的flagu可以说是一个信号量