2009-10-18 2 views
1

공개 문자열 [] SearchForMovie (문자열 SearchParameter입니다) {
WebClientX.DownloadDataCompleted + = 새로운 DownloadDataCompletedEventHandler (WebClientX_DownloadDataCompleted); WebClientX.DownloadDataAsync (새 Uri ( "http://www.imdb.com/find?s=all&q=ironman+&x=0&y=0"));WebClient.DownloadDataAsync()에 문제가 있습니다. 데이터를 다운로드하지 않습니까?

행렬이 null 일 수 없습니다 :

string sitesearchSource = Encoding.ASCII.GetString(Buffer); 
} 

void WebClientX_DownloadDataCompleted(object sender, 
    DownloadDataCompletedEventArgs e) 
{ 
    Buffer = e.Result; 
    throw new NotImplementedException(); 
} 

나는이 예외를 얻을. 내 byte [] 변수 버퍼 참조하기.

그래서 DownloadDataAsync가 실제로 아무것도 다운로드하지 않는다고 결론 내릴 수 있습니다. 이 문제의 원인은 무엇입니까?

추신. 여기에 올바르게 들여 쓰기되도록 코드를 쉽게 포맷 할 수 있습니까? Visual C# Express의 코드를 복사하여 여기에서 들여 쓰기를 유지할 수없는 이유는 무엇입니까? 감사! : D

답변

3

여기서 핵심 단어는 "async"입니다. DownloadDataAsync로 전화하면 으로 시작됩니다. 그것은 아직 완전하지 않습니다. 콜백 (WebClientX_DownloadDataCompleted)의 데이터를 처리해야합니다.

public string[] SearchForMovie(string SearchParameter) 
{ 
    WebClientX.DownloadDataCompleted += WebClientX_DownloadDataCompleted; 
    WebClientX.DownloadDataAsync(new Uri(uri)); 
} 

void WebClientX_DownloadDataCompleted(object sender, 
    DownloadDataCompletedEventArgs e) 
{ 
    Buffer = e.Result; 
    string sitesearchSource = Encoding.ASCII.GetString(Buffer); 
} 

또한 - ASCII를 가정하지 마십시오. WebClientX.Encoding이 더 좋을 것입니다. 또는 단지 DownloadStringAsync :

static void Main() 
{ 
    var client = new WebClient(); 
    client.DownloadStringCompleted += DownloadStringCompleted; 
    client.DownloadStringAsync(new Uri("http://google.com")); 
    Console.ReadLine(); 
} 

static void DownloadStringCompleted(object sender, 
    DownloadStringCompletedEventArgs e) 
{ 
    if (e.Error == null && !e.Cancelled) 
    { 
     Console.WriteLine(e.Result); 
    } 
} 
+0

아하! 나는 내 자신 (공제를 통해)을 알아 냈고 당신의 대답을 새롭게하고 보았다. : P 글쎄, 이것은 변수 범위 측면에서 내 프로그램 디자인을 바꿔 놓았습니다 ... TO THE LAB! –

관련 문제