Reading files asynchronously using WebClient in Silverlight

No.of Views3134
Bookmarked0 times
Downloads 
Votes0
By  Dhananjay Kumar   On  16 Apr 2011 11:04:36
Tag : Silver Light and XAML , General
In this article, i will explain how to download or read file asynchronously using WebClient class in Silverlight.The WebClient class is a has many methods,events and properties to support download files in different ways.
emailbookmarkadd commentsprint

Images in this article missing? We recently lost them in a site migration. We're working to restore these as you read this. Should you need an image in an emergency, please contact us at info@codegain.com

 

Introduction

WebClient class is used in Silverlight to asynchronously download or read a file from a particular URI.

1.    WebClient class is under System.Net namespace.
2.    This can retrieve data from any format of service. This can retrieve data in JSON, POX, and REST etc. format.
3.    WebClient makes the entire request asynchronously. So it does not block any other operation.
4.    On basis of data type of response from URI, we can choose class to parse the response data.  If response is JOSN, we can use DataContractJSONSerliazer to parse response data.
5.    Any type of file including Media, Images, and XML etc. can be downloaded using WebClient class.

Let us read a XML file asynchronously using WebClient class.

1.    Add XML file named Data.xml in the client bin folder. Right click on client Bin folder and add a new item then select XML file from Data tab. Give name of the file as Data.xml.

Data.xml

<?xml version="1.0" encoding="utf-8" ?>
<School>
  <Student>
    <RollNumber>1</RollNumber>
    <Name>John Papa</Name>
  </Student>
  <Student>
    <RollNumber>1</RollNumber>
    <Name>John Papa</Name>
  </Student>
  <Student>
    <RollNumber>2</RollNumber>
    <Name>Scott Gui</Name>
  </Student>
  <Student>
    <RollNumber>3</RollNumber>
    <Name>Jessy Liberty</Name>
  </Student>
  <Student>
    <RollNumber>4</RollNumber>
    <Name>Tim Huer</Name>
  </Student>
  <Student>
    <RollNumber>5</RollNumber>
    <Name>Victor Gud</Name>
  </Student>
  <Student>
    <RollNumber>6</RollNumber>
    <Name>Machesh Chand</Name>
  </Student>
  <Student>
    <RollNumber>7</RollNumber>
    <Name>Pinal Dave</Name>
  </Student>
  <Student>
    <RollNumber>8</RollNumber>
    <Name>Suprotim Agarwal</Name>
  </Student>
  <Student>
    <RollNumber>9</RollNumber>
    <Name>Dhananjay Kumar</Name>
  </Student>
  <Student>
    <RollNumber>10</RollNumber>
    <Name>Kunal Chawudhary</Name>
  </Student>
  <Student>
    <RollNumber>11</RollNumber>
    <Name>Abhijit Jana</Name>
  </Student>
  <Student>
    <RollNumber>12</RollNumber>
    <Name>Shiv Prasad Koirala</Name>
  </Student>
</School>

2.     Once Data.xml file is in place inside client bin folder, let us design XAML page.  We will put one Button and one TextBlock.
On click event of button, we will make asynchronous call to read Data.xml file. After successful reading, we will bind xml response to TextBlock.

MainPage.xaml

<UserControl xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" 
             x:Class="SilverlightApplication5.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">
 
    <Grid x:Name="LayoutRoot" Background="White">
        <StackPanel Orientation="Vertical" Margin="50,50,50,50">
        <Button x:Name="btnDemo" Content="Click To get Data From  XML using WebClient" Height="62" Width="362" />
            <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Height="200" Width="300">
                <TextBlock x:Name="txtDataFromXml"  Width="Auto" Height="Auto" />
            </ScrollViewer>
        </StackPanel>         
    </Grid>
</UserControl>

3.    On click event of button, we will read Data.xml file asynchronously. 

Image Loading

At time of creation of URL either we can provide absolute URI or relative.  In our example Data.xml file is in client bin folder so we are providing relative address.
In OpenReadCompleted event handler, we will parse XML file and bind response to TextBlock. 

Image Loading

For reference full code is given below,

MainPage.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.IO;
 
namespace SilverlightApplication5
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
            btnDemo.Click +=new RoutedEventHandler(btnDemo_Click);
        }
 
        private void btnDemo_Click(object sender, RoutedEventArgs e)
        {
            WebClient client = new WebClient();
            Uri uritoXML = new Uri("Data.xml",UriKind.Relative);           
            client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted);
            client.OpenReadAsync(uritoXML);
 
        }
 
        void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
        {
 
            Stream s = e.Result;
            StreamReader strReader = new StreamReader(s);
            txtDataFromXml.Text = strReader.ReadToEnd();
            s.Close();
        }
    }
}

Output 

Image Loading

That's all look good and hope helps.thank you for reading.

 
Sign Up to vote for this article
 
About Author
 
Dhananjay Kumar
Occupation-Software Engineer
Company-Infosys Technolgies,Pune
Member Type-Gold
Location-India
Joined date-20 Jul 2009
Home Page-http://dhananjaykumar.net/
Blog Page-http://dhananjaykumar.net/
Dhananjay Kumar is Microsoft MVP on connected system. He blogs at http://dhananjaykumar.net/ . You can follow him http://twitter.com/debugmode_/ and reach him at dhananjay.25july@gmail.com
 
 
Other popularSectionarticles
    In this article we’ll have a brief introduction to Microsoft Silverlight, see how it fits with other technologies today, and watch it in action. Get ready!
    Published Date : 05/May/2011
    When you start learning Silverlight and create your first Silverlight application, one thing you will notice XAP file along with HTML and ASPX files. First time after running your Silverlight application you can see XAP file in client bin folder. Before running of Silverlight application, you will not find XAP file in client bin folder.
    Published Date : 19/Apr/2011
    This article will give a basic introduction of behavior feature in SILVERLIGHT3.0. I will also walkthrough to create a custom behavior.
    Published Date : 05/Apr/2010
    we will see how we can filter a Textbox on Keyboard inputs. We will see how we can block Numeric input from Keyboard.
    Published Date : 16/May/2010
    In this article we would see how we can use ADO.NET Entity Data Model as the ORM in Silverlight 3 Application, and ADO.NET Data Service to fetch the data.
    Published Date : 20/Apr/2010
Comments
There is no comments for this articles.
Leave a Reply
Title:
Display Name:
Email:
(not display in page for the security purphase)
Website:
Message:
Please refresh your screen using Ctrl+F5
If you can't read this number refresh your screen
Please input the anti-spam code that you can read in the image.
^ Scroll to Top