2012-08-14 12 views
5

MonoTouch advertises destek çökmesini:AsParallel bu kod parçası ile kendi web sitesinde bir MonoTouch uygulamasını mı <code>AsParallel</code> için

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

System.ExecutionEngineException has been thrown. Attempting to JIT compile method 'System.Linq.Parallel.QueryNodes.WrapHelper:<Wrap<code>1>m__4A<int>(System.Collections.Generic.IEnumerator</code>1<int>)' while running with --aot-only.

: Ancak

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

, hatta önemsiz bir örnek benim app çöküyor MonoTouch'ın sanal jenerik yöntemlerle başa çıkamayacağını biliyorum, ancak PLINQ çalışmamalı mı?
Ne yapıyorum?

MonoTouch sürümü 5.3.5'tür.

Aynı Parallel.ForEach için de geçerli:

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. 
+0

@James: AFAIK - gerçek iOS cihazında mümkün olan tek moddur çünkü JIT Apple tarafından yasaklanmıştır. –

+0

Bu büyük olasılıkla bir hatadır, burada rapor verin ve çoğaltmak için hızlı bir proje ekleyin: http://bugzilla.xamarin.com – jonathanpeppers

cevap

4

This is a known limitation with MonoTouch and generics - Eğer yapılarla çalışıyoruz çünkü bu durumda bu kadar.

yerine nesneleri kullanmak eğer çalışması gerekir: Biz bu dezavantajların bazılarını çözmeye çalışıyoruz

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

, bu yüzden bizim için bir örnek projeye sahip hata raporu eğer iyi olurdu Bu vakayı gün içinde düzeltmenin mümkün olup olmadığını görmek için bir göz atın.

+1

Cevabınız için teşekkürler. Şimdi anlıyorum ki yapılar suçlandı. –

İlgili konular