WinRT后台任务中类的静态值为Null
本文关键字:Null 静态 后台任务 WinRT | 更新日期: 2023-09-27 18:26:15
我正在尝试保存从WinJs传递的配置(json字符串),并在backgroundTask中读取此配置。我声明了静态变量,这样我就可以从后台Task中读取值,但它返回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
。有什么不正确的地方吗?感谢
我猜您在前端调用SaveTileConfig
,并期望静态值在后台任务中自动可用?
不幸的是,事情并非如此。将后台任务和主应用程序视为在不同上下文中运行的不同程序。它们的共同点是,它们在同一设备和同一文件夹中运行。
解决方案是将TileConfig
序列化并保存在某个文件中,然后在后台任务中加载并反序列化它。没有其他方式可以在bg任务+前台应用程序之间共享数据。
您不为TileConfig分配内存。如果你打电话给
var confg = BackgroundTaskConfiguration.GetConfig();
在调用方法:SaveTileConfig之后,将不为null。您可以在方法SaveTileConfig中为属性TileConfig分配内存。