[英]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.