WinRT 后台任务中来自 class 的空静态值
Null static value from class inside WinRT background task
我正在尝试保存从 WinJs 传递的配置(json 字符串)并在 backgroundTask 中读取此配置。我正在声明静态变量,以便我可以从后台任务中读取值,但它 returns 为空。
Class 存储配置:
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();
两行 returns null
。
有什么线索在这里不正确吗?谢谢
我猜你是在前端调用 SaveTileConfig
,并希望静态值自动在后台任务中可用?
不幸的是,这不是它的工作原理。将后台任务和主应用程序视为在不同上下文中 运行 的不同程序。它们的共同点是 运行 在同一台设备上和同一文件夹中。
解决方案是将您的 TileConfig
序列化并保存在某个文件中,然后在后台任务中加载并反序列化它。没有其他方法可以在 bg 任务 + 前台应用程序之间共享数据。
您没有为 TileConfig 分配内存。如果你打电话给
var confg = BackgroundTaskConfiguration.GetConfig();
调用方法SaveTileConfig后,则不为空。
您在 SaveTileConfig 方法中为 属性 TileConfig.
分配内存
我正在尝试保存从 WinJs 传递的配置(json 字符串)并在 backgroundTask 中读取此配置。我正在声明静态变量,以便我可以从后台任务中读取值,但它 returns 为空。
Class 存储配置:
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();
两行 returns null
。
有什么线索在这里不正确吗?谢谢
我猜你是在前端调用 SaveTileConfig
,并希望静态值自动在后台任务中可用?
不幸的是,这不是它的工作原理。将后台任务和主应用程序视为在不同上下文中 运行 的不同程序。它们的共同点是 运行 在同一台设备上和同一文件夹中。
解决方案是将您的 TileConfig
序列化并保存在某个文件中,然后在后台任务中加载并反序列化它。没有其他方法可以在 bg 任务 + 前台应用程序之间共享数据。
您没有为 TileConfig 分配内存。如果你打电话给
var confg = BackgroundTaskConfiguration.GetConfig();
调用方法SaveTileConfig后,则不为空。 您在 SaveTileConfig 方法中为 属性 TileConfig.
分配内存