AsParallel崩溃了一个MonoTouch应用程序

Dan*_*mov 5 c# plinq xamarin.ios task-parallel-library

MonoTouch 使用以下代码片段在其网站上宣传支持AsParallel:

from item in items.AsParallel ()
   let result = DoExpensiveWork (item)
   select result;
Run Code Online (Sandbox Code Playgroud)

但是,即使是一个简单的样本也会崩溃我的应用:

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

抛出了System.ExecutionEngineException. 尝试使用JIT编译方法'System.Linq.Parallel.QueryNodes.WrapHelper:<Wrap <code>Parallel.ForEach</code>:</p>

<pre><code>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.
</code></pre><a target=Run Code Online (Sandbox Code Playgroud)

Rol*_*nge 4

这是 MonoTouch 和泛型的一个已知限制- 在本例中,这是因为您正在使用结构。

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

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

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