我试图保存从WinJs传递的配置(json字符串)并在backgroundTask中读取此配置。我声明了静态变量,所以我可以从后台任务读取值,但它返回null。
存储配置的类:
public sealed class BackgroundTaskConfiguration
{
internal static string jsonString;
public static IList<Config> TileConfig { get; set; }
public static void SaveTileConfig(string jsonConfig) {
TileConfig = new List<Config>();
jsonString = jsonConfig;
JsonArray jsonArray;
if (JsonArray.TryParse(jsonConfig, out jsonArray))
{
foreach (var item in jsonArray)
{
TileConfig.Add(Config.Create(item.GetObject()));
}
}
}
public static IList<Config> GetConfig() {
return TileConfig;
}
}
然后,我只是简单地阅读BackgroundTask方法,如
var confg = BackgroundTaskConfiguration.TileConfig;
或者
var confg = BackgroundTaskConfiguration.GetConfig();
这两行都返回null
。
有什么不明白的地方吗?感谢
答案 0 :(得分:1)
我猜您在前端调用SaveTileConfig
,并期望静态值自动在后台任务中可用?
不幸的是,它不是如何运作的。将后台任务和主应用程序视为在不同上下文中运行的不同程序。它们只有共同点,它们运行在同一设备和同一文件夹中。
解决方案是将TileConfig
序列化并保存在某个文件中,然后在后台任务中加载和反序列化它。没有其他方法可以在bg task + foreground app之间共享数据。
答案 1 :(得分:0)
您没有为 TileConfig 分配内存。如果你打电话
var confg = BackgroundTaskConfiguration.GetConfig();
调用后方法: SaveTileConfig ,则不会为空。 您可以在方法 SaveTileConfig 中为属性 TileConfig 分配内存。