2013-03-06 5 views
10

muszę następujące połączenia możliwe w ramach tego samego przenośnego klasy biblioteki.Portable Class Library z async czekają & GetType() IsValueType

public class Foobar 
{ 
    void Foo() 
    { 
     var b = GetType().IsValueType; //<-- 2 
    } 

    async Task<IEnumerable<T>> Bar<T>() 
     where T : class, IBaz, new() 
    { 
     return await Task.Factory.StartNew(() => new List<T>(new[] //<-- 1 
      { 
       new T {Qux = Guid.NewGuid().ToString()} 
      })); 
    } 

    interface IBaz 
    { 
     string Qux { get; set; } 
    } 
} 

z następujących struktur docelowych określonych:

  • . nET Framework 4.5
  • Sliverlight 5
  • Windows Phone 8
  • . Net for Windows Store aplikacje

otrzymuję ten błąd kompilacji:
nie można znaleźć wszystkie rodzaje wymaganych przez „asynchroniczny” modyfikatora. Czy kierujesz się do niewłaściwej wersji frameworku lub brakuje odniesienia do zespołu?

Próbowałem zainstalować bcl, ale nadal otrzymuję ten sam błąd. A jeśli usunę cel Sliverlight, async działa, ale wtedy stracę propozycję IsValueType z klasy Type ...

+3

Nie widzę żadnego powodu, aby ta metoda była "asynchroniczna". Po prostu usuń 'async',' await', i gotowe. Poza tym nie rozumiem nawet, dlaczego ta operacja musi się zdarzyć w wątku puli wątków; Generowanie pojedynczego identyfikatora GUID jest * bardzo * szybką operacją. Stracisz * lot * więcej czasu, rozpoczynając wątek puli wątków. – Servy

+0

Ten przykład służy wyłącznie do odtworzenia błędu kompilacji i nie jest wskazówką, jak rozwiązanie ma strukturę. – jaimie

Odpowiedz