WebClient DownloadStringCompleted Never started in console application

I don't know why the callback methods are not triggered in ALL. I am using VS 2010.

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

        }

      

+2


a source to share


2 answers


The event DownloadDataCompleted

fires if you call the method DownloadDataAsync()

. DownloadStringCompleted

runs if you call the method DownloadStringAsync()

.

To fire the DownloadDataCompleted event try:



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

      

+3


a source


I had this problem and realized that the uri is wrong. I mean the event won't fire if the file is not read correctly. So I put my XML file in the ClientBin and it worked like magic!



+1


a source







All Articles