2012-09-27 60 views
1

我訪問網站並使用HttpWebRequest檢索一些數據,我需要UIAlertViewUIActivityIndicatorView以在檢索所述數據時顯示。但是,它只是使屏幕變暗,並且在太晚之前不會顯示警報。我已經閱讀了其他與線程有關的問題,但無法弄清楚如何解決這個問題。我嘗試使用ThreadPool,InvokeOnMainThread,任務,所有這些都沒有奏效。使用webrequest和uialertview在MonoTouch中執行線程操作

編輯:

HttpWebRequest url = (HttpWebRequest)WebRequest.Create ("maps.googleapis.com/maps/api/place/search/..); 

HttpWebResponse webResp = (HttpWebResponse)url.GetResponse(); JsonValue jVal = 

JsonObject.Load (webResp.GetResponseStream()); 

JsonObject jObj = (JsonObject)jVal; 

我上面的代碼,它是否會妥善爲我的格式,我將如何轉換,要使用Web客戶端?你還能得到JSON等嗎?

+0

你可以發佈你當前的代碼不工作嗎? – jonathanpeppers

回答

2

與使用HttpWebRequest相比,使用WebClient和它的一個*Async方法通常要容易得多(而且不易出錯)。

下面是一個下載和顯示小圖片的例子。

WebClient client = new WebClient(); 
var wait = new UIActivityIndicatorView (View.Bounds); 
client.DownloadDataCompleted += (object sender, DownloadDataCompletedEventArgs e) => { 
    byte[] result = e.Result; 
    if (result != null) { 
     NSData data = NSData.FromArray (e.Result); 
     UIImage img = UIImage.LoadFromData (data); 
     InvokeOnMainThread (delegate { 
      ShowImage (img); 
      wait.StopAnimating(); 
     }); 
    } 
}; 
wait.StartAnimating(); 
client.DownloadDataAsync (new Uri (url)); 

(更新的問題)

對於您可以使用WebClient.OpenReadAsync流編輯和OpenReadCompleted事件。

+0

請編輯您的問題。我無法閱讀來源作爲評論。 – poupou

+0

對不起,我試圖將評論作爲對我原始問題的修改。我非常喜歡堆疊和單點新手。 – Smoore