2012-11-01 14 views
5

में इंतजार कर रहा है क्या WP8 में async/प्रतीक्षा पैटर्न के लिए समर्थन है?Async विंडोज फोन वेब एक्सेस एपीआई

मुझे वेब-आधारित एपीआई से एक्सएमएल प्राप्त करने की आवश्यकता है और ऐसा लगता है कि WebClient या WebRequest इसका समर्थन नहीं करते हैं।

क्या ऐसे वर्ग हैं जो WP8 बीसीएल में वेब एक्सेस के लिए async/उपयोग करने योग्य हैं? और यदि नहीं, क्या कोई पुस्तकालय है जिसका मैं उपयोग कर सकता हूं?

मुझे पता है कि इसका समर्थन करने के लिए रैपर बनाने में मुश्किल नहीं है, लेकिन ऐसा लगता है कि एसडीके में शामिल किया जाएगा।

उत्तर

16

क्या ऐसे वर्ग हैं जो WP8 बीसीएल में वेब एक्सेस के लिए async/उपयोग करने योग्य हैं?

यह एक चिंता है जो WP8 एसडीके के बंद बीटा के दौरान उठाई गई है, इसलिए मैं दुर्भाग्य से उत्तर दे सकता हूं, नहीं।

लेकिन जैसा कि आपने बताया है, यह आपके स्वयं के रैपर बनाने के लिए काफी आसान है।

उदाहरण के लिए:

public static class Extensions 
{ 
    public static Task<string> DownloadStringTask(this WebClient webClient, Uri uri) 
    { 
     var tcs = new TaskCompletionSource<string>(); 

     webClient.DownloadStringCompleted += (s, e) => 
     { 
      if (e.Error != null) 
      { 
       tcs.SetException(e.Error); 
      } 
      else 
      { 
       tcs.SetResult(e.Result); 
      } 
     }; 

     webClient.DownloadStringAsync(uri); 

     return tcs.Task; 
    } 
} 
+0

क्यों आप अपने स्वयं के सूत्र में async आपरेशन कर दिया जाएगा? मुझे नहीं पता क्यों, लेकिन यह भयानक लग रहा है! –

+0

बस कार्य को हटाएं। फैक्टरी। स्टार्टन्यू ... –

+1

@ टोनीपेट्रिना आप सही हैं, धन्यवाद। फिक्स्ड। –

0

वहाँ async/इंतजार WP8 में पैटर्न के लिए समर्थन है?

बस स्पष्ट करने के लिए, WinRT एपीआई काफी हद तक async पर निर्भर विंडोज फोन 8 पर पूर्ण सी # 5.0 समर्थन है/का इंतजार है, इस तरह के PeopleHub से समन्वयन करने वाले, या मैं/हे API का उपयोग करके के रूप में।

लेकिन सिल्वरलाइट और पुराने .NET एपीआई को वेब क्लाइंट जैसी कक्षाओं के लिए async/प्रतीक्षा करने के लिए अद्यतन नहीं किया गया है।

+0

मुझे लगता है कि भाषा समर्थन है, लेकिन कुकिज़ ने जोर देकर कहा, कोई एपीआई समर्थन नहीं है। –

+0

यदि आप मेरी * संपूर्ण * पोस्ट पढ़ते हैं, तो आप देखेंगे कि * कुछ * एपीआई के लिए * एपीआई समर्थन है। –

8

Microsoft.Threading.Tasks.Extensions.Phone.dll में WP8 के लिए कुछ समर्थन है in this blog post का वर्णन किया गया है।

विशेष रूप से, इसमें WebClient.DownloadStringTaskAsync शामिल है।

0

WP8 में देशी एसिंक/कुछ सीमाओं के साथ समर्थन का इंतजार है, जैसे एचटीपी क्लाइंट और संभवतः अन्य कक्षाएं गायब हैं।
WP7 async के लिए समर्थन प्राप्त था/AsyncCTP का उपयोग कर VS2010 में का इंतजार है, लेकिन VS2012 में यह Microsoft.Bcl.Async के रूप में हाल ही में फिर जोड़ा गया है:
https://nuget.org/packages/Microsoft.Bcl.Async/1.0.12-beta

1

मैं एक ही मुद्दा था और मैं इस पाया और मुझे

मदद की
private async Task<T> ExecuteAsync<T>(RestRequest request) 
    { 
     var tcs = new TaskCompletionSource<T>(); 
     _client.ExecuteAsync(request, resp => 
     { 
      var value = JsonConvert.DeserializeObject<T>(resp.Content); 
      if (value.ErrorCode > 0) 
      { 
       var ex = new ToodledoException(value.ErrorCode, value.ErrorDesc); 
       tcs.SetException(ex); 
      } 
      else 
       tcs.SetResult(value); 
     }); 
     return await tcs.Task; 
    } 

http://www.developer.nokia.com/Community/Wiki/Asynchronous_Programming_For_Windows_Phone_8 भी मैं इस विस्तार उपयोगी पाया http://nuget.org/packages/WP8AsyncWebClient/

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