我无法确认这一点,但似乎我的应用程序崩溃了,因为我的资源加载时间过长。
我相信它来自我对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。
还有其他人经历过这个吗?如果是这样,你有没有想出办法?
我发现一些文章提供了在运行时加载所需资源的建议,但它们似乎不适合我遇到的问题。
答案 0 :(得分:0)
问题似乎根本不是Win2D。问题似乎是字典正在试图填充太多数据。我没有凭经验证明这一点,但是我创建了两个单独的词典,将一半的图像放在一个,另一半放到第二个 - 问题解决了。
管理字典可能有更好的方法来容纳完整列表,但现在这是一个合理的解决方法。