0

我无法确定这一点,但看起来我的应用程序正在崩溃,因为我的资源加载时间过长。

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

有没有其他人经历过这个?如果是这样,您是否提出了解决方法?

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

4

1 回答 1

0

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

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

于 2017-10-07T16:21:15.497 回答