Windows Phone 8.1应用程序中存在问题,我必须添加大约2000 MapIcons才能映射:
while (r.Step() == SQLiteResult.ROW)
{
...
Map.MapElements.Add(MapIcon1);
}
此代码执行速度非常慢,仅对250个引脚执行约10秒,并阻止任何用户输入。
我试图创建没有结果的异步方法,似乎方法Map.MapElements.Add(MapIcon1);
内的逻辑总是在主线程中执行。有没有办法在循环中调用某些函数来处理UI?
编辑:代码中最慢的部分是Map.MapElements.Add(MapIcon1);
,当我删除它时,代码执行时间<1秒。
谢谢。
答案 0 :(得分:1)
正如Nicolas所提到的,在使用大量图钉时,您可能需要考虑添加群集。我有一个Windows Phone 8.1的群集解决方案,可作为此空间工具箱库的一部分提供:http://mapstoolbox.codeplex.com/
答案 1 :(得分:0)
通过在循环体中添加await Task.Delay(1);
并使此方法成为async
来解决问题。所以整个代码是:
async void update()
{
...
while (r.Step() == SQLiteResult.ROW)
{
...
Map.MapElements.Add(MapIcon1);
await Task.Delay(1);
}
}