2014-01-12 3 views
0

저는 Xamarin을 사용하고 있으며 내 앱이 실행 중일 때 다른 URL에서 많은 비트 맵을 얻고 싶습니다. 몇 가지 연구를 해본 결과 비동기 작업을 사용해야한다는 사실을 알게되었습니다.비동기 작업을 사용하여 비트 맵 반환

이 코드를 작성하는 데 도움이 필요합니까?

또한
private class LoadImage extends AsyncTask<String, Void, Bitmap> { 

    @Override 
    protected String doInBackground(String... params) { 
     URL myurl = new URL(params[0]); 
     Bitmap bmp = BitmapFactory.DecodeStream(myurl.OpenConnection().InputStream); 
     return bmp; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     item.icon = BitmapDescriptorFactory.FromBitmap(bmp); 
     item.Location = new LatLng (-41.227834, 174.812857); 
     item.Snippet = "Snippet2"; 
     item.Title = "Title2"; 
     item.ShowInfoWindowOnStartup = true; 
     _mapLocationList.Add(item); 
    } 

    @Override 
    protected void onPreExecute() {} 

    @Override 
    protected void onProgressUpdate(Void... values) {} 
} 

, 어떻게 비트 맵을 검색하는 코드를 호출 않습니다

나는 다음과 같은 코드는 자바 그러나, 나는 문제의 C#이 변환을 겪고있다? 사전

편집

에서

덕분에 기본적으로, 나는 온라인으로 많은 이미지 파일을 가지고 있고 이러한 파일을 검색하고 비트 맵에 그들 각각을 저장하고 싶습니다.

메인 스레드를 사용하면 오류가 발생합니다.

이러한 이미지 파일을 가져 와서 Bitmap 객체에 저장하는 가장 좋은 방법은 무엇입니까? (가) 방법을 실행

+0

사용할 수있게하면서 바로 다음 문으로 계속 이벤트를 등록한 후 DownloadDataAsync 시작

'내부 클래스 LoadImage : AsyncTask '으로 시작 했습니까? 나는 Sebastian의 접근법을 사용 하겠지만, 리팩터링 Java 코드보다는 C# 방식을 사용하는 것이 더 바람직합니다. – SKall

답변

0
new LoadImage.execute("Your string paramters"); 

는 doInBackground를 호출 등

+0

비동기 코드가 C#으로 표시되도록 도움을받을 수 있습니까? – user22707

+0

@ user22707 죄송합니다 C#을 모른다. < – Ogen

0

귀하의 질문은 진짜 대답에 충분한 특정되지 않습니다. 분명히 스레드를 차단하지 않고 이미지를 다운로드하려고합니다. Tasks 또는 C# async/await 키워드를 사용하는 것은 필요하지 않습니다. 또는 가능한 한 빨리 많은 이미지를 병렬로 다운로드 하시겠습니까? 지점에서 나중에있는 방법 DownloadComplete는 호출을 받고 다음을 복제 할 경우 이미지가

public static void BeginDownload() 
    { 
     var wc = new WebClient(); 
     wc.DownloadDataCompleted += DownloadComplete; 
     wc.DownloadDataAsync(new Uri("http://www......")); 
     ... 
    } 

    private static void DownloadComplete(object sender, DownloadDataCompletedEventArgs args) 
    { 
     using (var ms = new MemoryStream(args.Result)) 
     { 
      Image image = Image.FromStream(ms); 
      // At this point you have the image downloaded and available 
     } 
    } 
+0

제 편집물을 좀보실 수 있습니까? 감사. – user22707