UWP / Win2D - 加载画布资源时应用程序崩溃

时间:2017-10-06 15:22:28

标签: uwp win2d

我无法确认这一点,但似乎我的应用程序崩溃了,因为我的资源加载时间过长。

我相信它来自我对CreateCanvasResourcesAsync的调用

    public void OnCreateResources(CanvasControl sender, CanvasCreateResourcesEventArgs args)
    {
        args.TrackAsyncAction(CreateCanvasResourcesAsync(sender).AsAsyncAction());
    }

    private async Task CreateCanvasResourcesAsync(CanvasControl sender)
    {
        if (_tiles.Keys.Count > 0) return;
        await LoadImageAssets(sender, _tiles);
    }

    private async Task LoadImageAssets(CanvasControl canvas, IDictionary<int, CanvasBitmap> dictionary)
    {
        dictionary.Add((int)TileTypes.Tile1, await CanvasBitmap.LoadAsync(canvas, @"Assets/Tiles/Tile1.png"));
        dictionary.Add((int)TileTypes.Tile2, await CanvasBitmap.LoadAsync(canvas, @"Assets/Tiles/Tile2.png"));
    // etc.
    }

我正在加载大约200个位图,总大小约为4MB。

还有其他人经历过这个吗?如果是这样,你有没有想出办法?

我发现一些文章提供了在运行时加载所需资源的建议,但它们似乎不适合我遇到的问题。

1 个答案:

答案 0 :(得分:0)

问题似乎根本不是Win2D。问题似乎是字典正在试图填充太多数据。我没有凭经验证明这一点,但是我创建了两个单独的词典,将一半的图像放在一个,另一半放到第二个 - 问题解决了。

管理字典可能有更好的方法来容纳完整列表,但现在这是一个合理的解决方法。