MonoTouch advertises在其网站上通过以下代码段支持AsParallel:

from item in items.AsParallel ()
   let result = DoExpensiveWork (item)
   select result;

但是,即使是一个简单的示例也会使我的应用程序崩溃:
 var items = new [] { 1, 2, 3 };
 var twice = (
        from x in items.AsParallel()
        select 2 * x
    ).ToArray();

我知道MonoTouch无法处理虚拟泛型方法,但是PLINQ不应该工作吗?
我在做什么错?

MonoTouch版本是5.3.5。
Parallel.ForEach也是如此:
System.AggregateException: One or more errors occured ---> System.Exception:
Attempting to JIT compile method 'System.Threading.Tasks.Parallel:<ForEach`1>m__36<int> ()' while running with --aot-only.
See http://docs.xamarin.com/ios/about/limitations for more information.

最佳答案

This is a known limitation with MonoTouch and generics-在这种情况下,这是因为您正在使用结构。

如果使用对象代替它应该可以工作:

var items = new object [] { 1, 2, 3 };
var twice = (
    from x in items.AsParallel()
    select 2 * x
).ToArray();

我们正在努力解决其中的一些限制,因此,如果您可以向示例项目提交错误报告,让我们看看是否有可能在一天之内真正解决此问题,那就太好了。

10-01 03:08
查看更多