2012-11-29 43 views
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 
} 

綁定的值在6000到10000之間。此循環需要時間並掛起UI,這就是爲什麼我將循環分成10個部分並使用task.delay。 是否有可能並行運行所有十個循環?我無法使用線程,因爲我無法在新線程中創建Location類的對象。它會拋出一個任務被另一個線程編組的錯誤Winrt中的並行循環

+1

是什麼'routeLine.Locations'?你確定它是線程安全的「添加」?如果不是,你將不得不同步。坦率地說,我認爲這不會對並行化有用。在後臺構建組合線* *,*確定* - 只需啓動一個任務即可在工作人員上構建循環,然後「等待」任務。但那是不同的。 –

回答