C# winrt中的并行循环 for(int j=0;j
绑定的值介于6000到10000之间。这个循环需要时间并挂起UI,这就是为什么我将循环分成10个部分并使用task.delay。C# winrt中的并行循环 for(int j=0;j,c#,windows-runtime,task-parallel-library,winrt-async,C#,Windows Runtime,Task Parallel Library,Winrt Async,绑定的值介于6000到10000之间。这个循环需要时间并挂起UI,这就是为什么我将循环分成10个部分并使用task.delay。 有可能并行运行所有十个循环吗?我不能使用线程,因为我不能在新线程中创建Location类的对象。它抛出一个任务被另一个线程封送的错误是的,这是可能的;您可以使用TPL和并行。ForEach: 是的,这是可能的;您可以使用TPL和并行。ForEach: 什么是路线位置?您确定添加是线程安全的吗?如果没有,则必须同步。坦白地说,我不认为这对并行化有用。在后台构建合成行
有可能并行运行所有十个循环吗?我不能使用线程,因为我不能在新线程中创建Location类的对象。它抛出一个任务被另一个线程封送的错误是的,这是可能的;您可以使用TPL和
并行。ForEach
:
是的,这是可能的;您可以使用TPL和
并行。ForEach
:
什么是
路线位置?您确定添加是线程安全的吗?如果没有,则必须同步。坦白地说,我不认为这对并行化有用。在后台构建合成行,当然-只需启动一个任务,在辅助进程上构建循环,然后“等待”该任务。但那是不同的。routeLine.Locations
是什么?您确定添加是线程安全的吗?如果没有,则必须同步。坦白地说,我不认为这对并行化有用。在后台构建合成行,当然-只需启动一个任务,在辅助进程上构建循环,然后“等待”该任务。但这是不同的。
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
}