簡體   English   中英

將可移植類庫與Webrequest和WP8一起使用

[英]Using Portable Class Library with Webrequest and WP8

我有一個我找不到任何解決方案的問題,而且我很難相信我是唯一遇到此錯誤的人。

我在可移植類庫中有這段C#代碼

static public void GetAnimeListFromWeb(ObservableCollection<AnimeViewModel> collection, string Url, string encodedLogin = "")
    {
        WebRequest request = WebRequest.Create(Url);
        request.Headers["Authorization"] = encodedLogin;

        IAsyncResult asyncResult = request.BeginGetResponse(new AsyncCallback( s => {
            WebResponse response = (s.AsyncState as WebRequest).EndGetResponse(s);
            XDocument doc = XDocument.Load(response.GetResponseStream());

            IEnumerable<AnimeViewModel> result = ParseAnimeXML(doc);

            collection = (ObservableCollection<AnimeViewModel>)result;

        }), request);
    }

當我對此進行編譯時,它會生成,並且代碼也可以在我編寫的用於測試它的小型控制台程序中使用。 但是,在Windows Phone 8應用中進行測試時,它會崩潰

WebResponse response = (s.AsyncState as WebRequest).EndGetResponse(s);

它拋出一個ArgumentException。 當我檢查's'變量時,它說AsyncWaitHandle給出了NotSupportedException。

我的問題是,我怎樣才能做出適合所有平台的Webrequest?

編輯:也許有用的是,我針對Windows Store Apps針對.NET 4.5,SL4和更高版本,WP7和更高版本以及.NET

我認為,您需要使用最新的Asyc / Await概念來執行此任務,例如DownloadStringAsync。 因為Async / Await是Windows 8和Windows Phone 8中唯一受支持的機制,但是,當您使用此代碼並將其構建用於多個平台時,編譯器將處理不同平台的復雜性並生成所需的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM