C# 静态变量变为空
我在一个解决方案中有两个项目(将它们视为project1和project2)。第一个项目(project1)包含一个保存全局变量的类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类中设置静态变量的值,
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开发指南。