2010-05-08 2 views
2

콜백 메서드가 모두 AT가 실행되지 않는 이유는 확실하지 않습니다. 나는 VS 2010WebClient DownloadStringCompleted 콘솔 응용 프로그램에서 결코 실행되지 않음

당신이 DownloadDataAsync() 메소드를 호출하면 DownloadDataCompleted 이벤트가 발생한다
static void Main(string[] args) 
     { 
      try 
      { 
       var url = "some link to RSS FEED"; 
       var client = new WebClient(); 
       client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted); 
       client.DownloadDataCompleted += new DownloadDataCompletedEventHandler(client_DownloadDataCompleted); 

       client.DownloadStringAsync(new Uri(url)); 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex.Message); 
      } 
     } 
     // THIS IS NEVER FIRED 
     static void client_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e) 
     { 
      Console.WriteLine("something"); 
     } 

     // THIS IS NEVER FIRED 
     static void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 
     { 
      Console.WriteLine("do something"); 

      var rss = XElement.Parse(e.Result); 

      var pictures = from item in rss.Descendants("channel") 
          select new Picture 
          { 
           Name = item.Element("title").Value 
          }; 

      foreach (var picture in pictures) 
      { 
       Console.WriteLine(picture.Name); 
       Console.WriteLine(picture.Url); 
      } 

     } 
+0

답변을 얻었습니까? –

답변

3

을 사용하고 있습니다. DownloadStringAsync() 메서드를 호출하면 DownloadStringCompleted이 발생합니다.

가 발광하는 DownloadDataCompleted 이벤트를 얻으려면, 시도 :

static void Main(string[] args) 
     { 
      try 
      { 
       var url = "http://blog.gravitypad.com"; 
       //client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted); 
       client.DownloadDataCompleted += new DownloadDataCompletedEventHandler(client_DownloadDataCompleted); 

       client.DownloadDataAsync(new Uri(url)); 
       Console.ReadLine(); 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex.Message); 
      } 
     } 
+0

언급 했어야 할 사항 : DownloadDataAsync는 결과를 바이트 배열로 반환하며, DownloadStringAsync는 결과를 문자열로 반환합니다. –

+0

위의 코드에서 DownloadStringAsync 메서드를 호출하고 있습니다! – azamsharp

+0

맞아,하지만 당신은 DownloadDataCompleted 이벤트가 발생할 것으로 예상하고 있습니다. DownloadDataComple을 호출하지 않으면 DownloadStringCompleted 만 실행됩니다. –

1

나는이 문제를 가지고 있었고, URI가 정확하지 것을 깨달았다. 파일이 올바르게 읽혀지지 않으면 이벤트가 발생하지 않습니다. 그래서 ClientBin에 xml 파일을 넣었고 마술처럼 작동했습니다!

관련 문제