Question Arises: What 
is Save Ringtone Task?
This concept allows to 
access to the user whereby enabling to save the ringtone on system. 
So, let's get it started 
off now.
The Complete Code of IService1.cs looks like 
this:
using 
System;
using 
System.Collections.Generic;
using 
System.Linq;
using 
System.Runtime.Serialization;
using 
System.ServiceModel;
using 
System.ServiceModel.Web;
using 
System.Text;
namespace 
Save_Ringtone_WCF
{
    // NOTE: You can use the "Rename" command on the "Refactor" 
menu to change the interface name "IService1" in both code and config file 
together.
    [ServiceContract]
    public interface
IService1
    {
        [OperationContract]
        string DisplayName(string 
a);
        [OperationContract]
        string URI();
    }
}
The Complete Code of Service1.svc.cs looks 
like this:          
using 
System;
using 
System.Collections.Generic;
using 
System.Linq;
using 
System.Runtime.Serialization;
using 
System.ServiceModel;
using 
System.ServiceModel.Web;
using 
System.Text;
namespace 
Save_Ringtone_WCF
{
    // NOTE: You can use the "Rename" command on the "Refactor" 
menu to change the class name "Service1" in code, svc and config file together.
    public class
Service1 : IService1
    {
        public string 
DisplayName(string a)
        {
            return 
"" + a;
        }
        public
string URI()
        {
            return 
"";
        }
    }
}
The Complete Code of Web.Config looks like 
this:
<?xml
version="1.0"?>
<configuration>
  <system.web>
    <compilation
debug="true"
targetFramework="4.0" 
/>
  </system.web>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid 
disclosing metadata information, set the value below to false and remove the 
metadata endpoint above before deployment 
-->
          <serviceMetadata
httpGetEnabled="true"/>
          <!-- 
To receive exception details in faults for debugging purposes, set the value 
below to true.  Set to false before deployment to avoid disclosing exception 
information -->
          <serviceDebug
includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment
multipleSiteBindingsEnabled="true" 
/>
  </system.serviceModel>
  <system.webServer>
    <modules
runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>
The Complete Code of MainPage.xaml looks like 
this:
<phone:PhoneApplicationPage
    x:Class="Save_Ringtone_Task.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
d:DesignWidth="480"
d:DesignHeight="768"
    FontFamily="{StaticResource 
PhoneFontFamilyNormal}"
    FontSize="{StaticResource 
PhoneFontSizeNormal}"
    Foreground="{StaticResource 
PhoneForegroundBrush}"
    SupportedOrientations="Portrait"
Orientation="Portrait"
    shell:SystemTray.IsVisible="True">
    <!--LayoutRoot 
is the root grid where all page content is placed-->
    <Grid
x:Name="LayoutRoot"
Background="Transparent">
        <Grid.RowDefinitions>
            <RowDefinition
Height="Auto"/>
            <RowDefinition
Height="*"/>
        </Grid.RowDefinitions>
        <!--TitlePanel 
contains the name of the application and page title-->
        <StackPanel
x:Name="TitlePanel"
Grid.Row="0"
Margin="12,17,0,28">
            <TextBlock
x:Name="ApplicationTitle"
Text="Vijay's Save 
Ringtone Task" FontFamily="Verdana"
FontSize="22"
Style="{StaticResource 
PhoneTextNormalStyle}"/>
            <TextBlock
x:Name="PageTitle"
Text="Windows 7 Phone"
Margin="9,-7,0,0" Style="{StaticResource 
PhoneTextTitle1Style}"/>
        </StackPanel>
        <!--ContentPanel 
- place additional content here-->
        <Grid
x:Name="ContentPanel"
Grid.Row="1"
Margin="12,0,12,0">
            <Button
Content="Save"
Height="72"
HorizontalAlignment="Left"
Margin="157,157,0,0"
Name="button1"
VerticalAlignment="Top"
Width="160"
Click="button1_Click"
/>
            <TextBlock
Height="30"
HorizontalAlignment="Left"
Margin="69,25,0,0"
Name="textBlock1"
FontFamily="Verdana"
FontSize="22"
Text="Please Enter 
Ringtone Name" VerticalAlignment="Top"
/>
            <TextBox
Height="72"
HorizontalAlignment="Left"
Margin="105,61,0,0"
Name="textBox1" 
VerticalAlignment="Top"
Width="261"
/>
        </Grid>
    </Grid>
    <!--Sample 
code showing usage of ApplicationBar-->
    <!--<phone:PhoneApplicationPage.ApplicationBar>
        <shell:ApplicationBar 
IsVisible="True" IsMenuEnabled="True">
            <shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" 
Text="Button 1"/>
            <shell:ApplicationBarIconButton IconUri="/Images/appbar_button2.png" 
Text="Button 2"/>
            <shell:ApplicationBar.MenuItems>
                <shell:ApplicationBarMenuItem Text="MenuItem 1"/>
                <shell:ApplicationBarMenuItem Text="MenuItem 2"/>
            </shell:ApplicationBar.MenuItems>
        </shell:ApplicationBar>
    </phone:PhoneApplicationPage.ApplicationBar>-->
</phone:PhoneApplicationPage>
The Complete Code of MainPage.xaml.cs looks 
like this:
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 
Microsoft.Phone.Controls;
using 
Microsoft.Phone.Tasks;
using 
Save_Ringtone_Task.ServiceReference1;
namespace 
Save_Ringtone_Task
{
    public partial
class MainPage 
: PhoneApplicationPage
    {
        // Constructor
        public MainPage()
        {
            InitializeComponent();
        }
        private
void button1_Click(object 
sender, RoutedEventArgs e)
        {
            if (textBox1.Text ==
"")
            {
            }
            else
            {
                Service1Client objClient = new 
Service1Client();
                objClient.DisplayNameCompleted += new
EventHandler<DisplayNameCompletedEventArgs>(DisplayCall);
                objClient.DisplayNameAsync(textBox1.Text);
                objClient.URICompleted += new
EventHandler<URICompletedEventArgs>(URICall);
                objClient.URIAsync();
            }
        }
        static void 
DisplayCall(object sender, 
DisplayNameCompletedEventArgs e)
        {
            SaveRingtoneTask objRingTask = new 
SaveRingtoneTask();
            objRingTask.DisplayName = e.Result;
            //  objRingTask.Show();
        }
        static void 
URICall(object sender, URICompletedEventArgs e)
        {
            SaveRingtoneTask objURITask = new 
SaveRingtoneTask();
            objURITask.Source = new
Uri("/nokialumia.mp3");
            objURITask.Show();
        }
    }
}
The Output of the Application looks like 
this:
![SaveRington0.png]()
The Nothing Entered Output of the Application 
looks like this:
![SaveRington1.png]()
I hope this article is 
useful for you.