0

我正在尝试保存从 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。有什么不正确的线索吗?谢谢

4

2 回答 2

1

我猜您是SaveTileConfig在前端调用,并期望静态值自动在后台任务中可用?

不幸的是,它不是这样工作的。将后台任务和主应用程序视为在不同上下文中运行的不同程序。它们唯一的共同点是它们在同一设备和同一文件夹中运行。

解决方案是将您的序列化并保存TileConfig在某个文件中,然后在后台任务中加载和反序列化它。没有其他方法可以在 bg 任务 + 前台应用程序之间共享数据。

于 2015-12-09T07:05:06.103 回答
0

您不为TileConfig分配内存。如果你打电话

var confg = BackgroundTaskConfiguration.GetConfig();

调用方法后:SaveTileConfig,则不为空。您在方法SaveTileConfig中为属性TileConfig分配内存。

于 2015-12-09T07:10:00.533 回答