2012-04-28 13 views
8

Kod F # kierowany na xbox360 przy użyciu xna nie kompiluje się po przekonwertowaniu projektu na przenośną bibliotekę klas.Jak utworzyć wątek w przenośnej bibliotece klas?

let thread = Thread(fun() -> 
    setAffinity() 

Temat dostaje czerwone squiggles i komunikat o błędzie mówi

Błąd 1 Ten typ nie ma dostępnych konstruktorów obiektów

pewno wystarczy, jeśli patrzę na mscorlib w Eksploratorze obiektów, typ nie ma konstruktora. Jednak zgodnie z MSDN konstruktor istnieje na Xbox i PCL.

Edytuj: Próbowałem z C# PCL, i mam ten sam błąd.

Odpowiedz

7

Tworzenie wątków nie jest przenośne. Twój link jest nieprawidłowy, nie mówi o PCL.

Jest to koszt korzystania z Portable Class Library, jest to, co zostało po odjęciu wszystkiego, co nie jest obsługiwane przez co najmniej jeden z możliwych celów. Co nie pozostawia wiele, PCL jest dość mały. Największym zawieszeniem jest cel, który w rzeczywistości nie jest wymieniony jako obsługiwany, ale WinRT (inaczej Metro). Ma poważnie ograniczone api.

Rozważ zamiast tego wątek ThreadPool.QueueUserWorkItem(). Zakładam, że Zadanie będzie obsługiwane pewnego dnia w PCL. Jest to obecnie praca w toku.

+0

Łącze mówi pod koniec "Wspierane w: Portable Class Library". Dziękuję za sugestię dotyczącą 'QueueUserWorkItem()', ale to nie jest opcja w moim przypadku, ponieważ chcę kontrolować, który rdzeń wątku działa, i wątpię, że pula wątków zapewni rodzaj wymaganych gier o małym opóźnieniu. – Joh

+0

Ach, tak, to błąd w dokumentacji. Nie można opisać artykułu MSDN, David Kean śledzi tag w SO, więc mam nadzieję, że go zobaczy. –

+0

Co takiego "nie jest przenośne" w tworzeniu nowego wątku? Na przykład, jeśli udostępniam kod między .net i Windows Phone? – Grigory

1

Nie być gibsem, ale to brzmi jak błąd i tak będę postępować. Wyślij go do fsbugs pod Microsoft dot com

+0

'fsbugs' nie zajmują się tylko .NET błędów, F # błędów (jak nazwa wskazuje). –

+0

To brzmiało jak problem z F #, który tworzył prawidłowo PCL, dlatego podjąłem tę sugestię. –

+0

Próbowałem już z projektem C# i otrzymałem ten sam błąd. Dlatego usunąłem tag F # z mojego pytania. Przepraszam za zamieszanie. – Joh

Powiązane problemy