2012-09-27 4 views
1

웹 사이트에 액세스하고 HttpWebRequest을 사용하여 일부 데이터를 검색하고 해당 데이터를 검색하는 동안 표시 할 으로 UIAlertView이 필요합니다. 그러나 화면을 흐리게 표시하고 너무 늦을 때까지 경고를 표시하지 않습니다. 다른 스레딩 관련 질문을 여기에서 읽었으며이를 해결하는 방법을 알 수 없습니다. ThreadPool, InvokeOnMainThread, Tasks를 사용해 보았습니다.이 중 모두는 작동하지 않았습니다.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; 

제대로 나를 위해 포맷 할 경우 나는 위의 코드를 가지고, 어떻게 내가 그 웹 클라이언트를 사용하여 변환 할 것인가? 여전히 JSON 등을 얻을 수 있습니까?

+0

현재 작동하지 않는 코드를 게시 할 수 있습니까? – jonathanpeppers

답변

2

HttpWebRequest을 사용하는 것보다 WebClient을 사용하는 것이 훨씬 쉬우 며 (오류가 발생하기 쉽지 않음) 한 방법이 *Async입니다.

다음은 작은 이미지를 다운로드하고 표시하는 예입니다. 당신이 WebClient.OpenReadAsync을 사용할 수 있습니다 스트림

(업데이트 질문)

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)); 

편집하고 OpenReadCompleted 이벤트입니다.

+0

질문을 수정하십시오. 나는 소스를 코멘트로 읽을 수 없다. – poupou

+0

죄송합니다. 본인의 원래 질문에 대한 수정으로 의견을 요청했습니다. 나는 꽤 스택과 monotouch 초보자입니다. – Smoore