UWP/Win2D - 应用程序在加载 canvas 资源时崩溃

UWP/Win2D - application crashes while loading canvas resources

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

我相信它来自我对 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。

有没有人遇到过这种情况?如果是这样,您有没有想出解决方法?

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

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

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