В WPF на .Net 4 я имел подобный цикл нерест фона работы:WPF в Silverlight резьб преобразование
Point[] points = GetPoints();
List<Task> tasks = new List<Task>();
// loop bitmap
for (int x = 0; x < bitmap.Width; x++) {
for (int y = 0; y < bitmap.Height; y++) {
Task t = new Task((object point) => {
Point p = points[((Point)point).Y * bitmap.Width + ((Point)point).X];
p.CalculateInterference(); // a bit slow
}, new Point(x, y));
t.Start();
tasks.Add(t);
}
// after spawning tasks for all the Y column I need them to finish before proceeding
foreach (var t in tasks) {
t.Wait();
}
tasks.Clear();
}
Это было легко с классом задач в .NET4, но на Silverlight 3 я не вижу их ...
Что было бы самым простым, но все же правильным способом сделать эту работу в Silverlight без нереста Y потоков параллельно, потому что Y может быть большим значением. Было бы хорошо, что он использует доступные ресурсы центрального процессора хоста ...
Спасибо!
ThreadPool? Вы должны были бы сделать большую работу самостоятельно, хотя. – jv42
Возможно, ThreadPool, но как правильно использовать эту конструкцию, мне нужно, чтобы все они были закончены после внутреннего цикла. Если я поставил их в очередь и сделаю Thread.Join в потоке, который еще не запланирован в ближайшее время для запуска в пуле, я бы блокировал его до тех пор, пока он не запустится и не убьет все преимущества параллелизма? или я ошибаюсь? –
Это было бы очень много работы, поэтому я не публиковал это как «ответ»;) – jv42