2013-03-06 5 views
10

मैं एक ही पोर्टेबल वर्ग पुस्तकालय के भीतर संभव निम्नलिखित कॉल की जरूरत है:।async के साथ पोर्टेबल कक्षा लाइब्रेरी का इंतजार है और 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; } 
    } 
} 
निम्नलिखित लक्ष्य चौखटे सेट के साथ

:

  • । शुद्ध फ्रेमवर्क 4.5
  • Sliverlight 5
  • Windows Phone 8

  • सभी प्रकार के 'async' संशोधक के लिए आवश्यक नहीं मिली: Windows स्टोर के लिए नेट

मैं इस बिल्ड त्रुटि मिलती एप्लिकेशन। क्या आप गलत फ्रेमवर्क संस्करण को लक्षित कर रहे हैं, या किसी असेंबली के संदर्भ को याद कर रहे हैं?

मैंने bcl स्थापित करने का प्रयास किया लेकिन फिर भी वही त्रुटि मिलती है। और यदि मैं स्लाइवरलाइट को एसिंक काम करता हूं तो हटा देता हूं लेकिन फिर मैं टाइप क्लास से IsValueType प्रोप खो देता हूं ...

+3

मुझे उस विधि के लिए 'async' होने का कोई कारण नहीं दिखता है। बस 'async',' प्रतीक्षा करें 'को हटाएं, और आप कर चुके हैं। इसके अलावा, मैं यह भी नहीं देखता कि थ्रेड पूल थ्रेड में उस ऑपरेशन की आवश्यकता क्यों है; एक एकल GUID उत्पन्न करना एक * बहुत * तेज ऑपरेशन है। थ्रेड पूल थ्रेड शुरू करने से आप * बहुत * अधिक समय खो देंगे। – Servy

+0

उदाहरण पूरी तरह से संकलन त्रुटि के पुन: निर्माण के लिए है और यह समाधान नहीं है कि समाधान कैसे संरचित किया जाता है। – jaimie

उत्तर

12

आपको Microsoft.Bcl.Async इंस्टॉल करने की आवश्यकता है।

+1

धन्यवाद, खुशी है कि यह कुछ आसान था जो मुझे याद आया ... – jaimie

संबंधित मुद्दे