2
for (int j = 0; j < 10; j++)
{
    for (long i = 0; i < bound / 10; i++)
    {
        routeLine.Locations.Add(new Location
        {
            Latitude = ((BingMapsRESTService.Route)(r.ResourceSets[0].Resources[0])).RoutePath.Line.Coordinates[k][0],
            Longitude = ((BingMapsRESTService.Route)(r.ResourceSets[0].Resources[0])).RoutePath.Line.Coordinates[k][1]
        });

        k++;
    }

    await Task.Delay(TimeSpan.FromMilliseconds(1));

    Temp("Drawing Route (" + ((j * 10)/2).ToString() + "%)"); // to show progress,Temp sets text property of a textbox
}

Bound 的值在 60​​00 到 10000 之间。这个循环需要时间并且会挂起 UI,这就是我将循环分成 10 个部分并使用 task.delay 的原因。是否可以并行运行所有十个循环?我不能使用线程,因为我不能在新线程中创建 Location 类的对象。它会引发任务被另一个线程封送的错误

4

1 回答 1

4

是的,有可能; 您可以使用 TPL 和Parallel.ForEach

TPL

Parallel.ForEach

于 2012-11-29T10:23:58.967 回答