5

MonoTouch在其网站上通过以下代码片段宣传支持: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();

System.ExecutionEngineException 已被抛出。 尝试在使用 --仅 aot。

我知道 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.
4

1 回答 1

4

这是 MonoTouch 和泛型的一个已知限制- 在这种情况下,这是因为您正在使用结构。

如果您改用对象,它应该可以工作:

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

我们正在努力修复其中的一些限制,因此如果您可以提交带有示例项目的错误报告,以便我们查看是否有可能在当天实际修复此案例,那就太好了。

于 2012-09-04T10:12:57.537 回答