我有一个主要应用程序(确切地说是Windows Phone)。它引用了我创建的另一个类库。我在这个类库中创建了一个静态变量,并且正在从主应用程序中更改这些变量。从主应用程序访问时正确显示变量值,但是当我从类库本身访问相同的变量时,它显示不同的值。以下是我的代码。
My class library中的一个类:
public class PlayerQueue
{
public static bool LoopStatus;
public static PlayerQueueTrack GetNextSong(String audioTrackId)
{
if (LoopStatus)
return audioTracks[audioTrackId];
}
}
在我的Windows Phone应用程序中点击方法:
private void loopButton_Tap_1(object sender, System.Windows.Input.GestureEventArgs e)
{
PlayerQueue.LoopStatus = true;
}
在手机应用程序中执行tap方法后,如果从类库中调用GetNextSong()方法,则LoopStatus显示为false,即使它设置为true。
因此,从Windows Phone应用程序访问PlayerQueue.LoopStatus
时的值不同,从包含PlayerQueue.LoopStatus
的类库访问时PlayerQueue.LoopStatus
给出的值不同。
有谁能告诉我如何在数据库和应用程序中保存数据?
编辑: 在类库中添加类,从中进行GetNextSong()调用
public class AudioPlayer : AudioPlayerAgent
{
private static volatile bool _classInitialized;
public AudioPlayer()
{
if (!_classInitialized)
{
_classInitialized = true;
// Subscribe to the managed exception handler
Deployment.Current.Dispatcher.BeginInvoke(delegate
{
Application.Current.UnhandledException += AudioPlayer_UnhandledException;
});
}
}
protected override void OnPlayStateChanged(BackgroundAudioPlayer player, AudioTrack track, PlayState playState)
{
PlayerQueueTrack playerTrack = PlayerQueue.GetNextSong(id);
}
}
答案 0 :(得分:2)
静态值在应用程序域中保留。只要您的应用程序正在运行且未创建新的应用程序域,它将保持不变。或者另一段代码正在改变它。
Windows Phone 8有点复杂,因为事件图块和应用程序往往在不同的应用程序域中运行:
Static variable value different in background agent
如果事件切片和后台进程之间有静态值,则最后剩下的选项是将其存储到持久数据存储/隔离存储中。