Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 静态变量变为空_C#_.net_Static Variables - Fatal编程技术网

C# 静态变量变为空

C# 静态变量变为空,c#,.net,static-variables,C#,.net,Static Variables,我在一个解决方案中有两个项目(将它们视为project1和project2)。第一个项目(project1)包含一个保存全局变量的类 public static class GlobalTrackInfo { public static string tracktitle { get; set; } public static Uri trackUri { get; set; } } 我在project2中添加了project1的引用,并在project2类中设置静态变量的值,

我在一个解决方案中有两个项目(将它们视为project1和project2)。第一个项目(project1)包含一个保存全局变量的类

public static class GlobalTrackInfo
{
    public static string tracktitle { get; set; }
    public static Uri trackUri { get; set; }
}
我在project2中添加了project1的引用,并在project2类中设置静态变量的值,如下所示

GlobalTrackInfo.tracktitle = "myTitle";
GlobalTrackInfo.trackUri   = new Uri("www.example.com");
后来我尝试在project1类中访问这些变量,如下所示

Title = GlobalTrackInfo.tracktitle;
但它似乎是空的。我做错了什么?
不能在不同的项目之间使用全局变量吗?

当两个项目有自己的AppDomain时,不能在它们之间共享静态变量。根据MSDN文件:

默认情况下,使用DLL的每个进程都有自己的所有 DLL全局和静态变量


如果您想这样做,最好使用另一种方法,如网络通信(IPC)或类似的方法。

您的程序是多线程的吗?几乎不可能回答这个问题,因为我们不知道该变量的值设置在哪里。您可以通过“查找所有引用”检查所有位置或者将该字段更改为属性,并将断点添加到setterno。该变量不是多线程的。该变量仅设置一次。project2是否加载在单独的应用程序域中?我可以拥有一个DLL,该DLL在另一个DLL中引用…第二个DLL由exe引用…因此第一个DLL中的静态变量be将可访问,并将一直保持到exe被激活终止…基本上静态变量将一直处于活动状态,直到您卸载了加载到其中的域。有关引用,请参见MSDN上的.NET Framework开发指南。