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.

分配内存