WPF到Silverlight线程转换

时间:2011-05-11 19:38:20

标签: c# .net wpf silverlight-3.0

在.Net 4上的WPF中,我有一个类似的循环产生后台工作:

        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中的Task类很容易,但在Silverlight 3上我看不到它们......

在不同时生成Y线程的情况下,在Silverlight中使这个工作最简单但仍然正确的方法是什么,因为Y可以是一个很大的值。它使用主机的可用CPU资源会很好......

谢谢!

1 个答案:

答案 0 :(得分:3)

对于.NET4版本,最好使用Parallel.For

正是出于这种情况。

对于Silverlight,您可以自己开发,这里有一些代码可以帮助您入门:

请参阅标题为循环平铺的部分。