[覚え書き] Silverlight で Pingするアプリを作る その3

スポンサーリンク

[ad#468×15]
前回はPingを実行するサービスの作成と、サービスの参照を追加した。
今回は、ユーザーインターフェースの作成とPingサービスの利用について記す。

まずはSilverlightPingプロジェクトにあるMainPage.xamlを開いて、下記のようにデザインする。

<Grid x:Name="LayoutRoot" Background="White">
    <TextBox Height="24" HorizontalAlignment="Left" Margin="12,20,0,0" Name="txtHost" VerticalAlignment="Top" Width="150" />
    <Button Content="PING" Height="23" HorizontalAlignment="Left" Margin="168,20,0,0" Name="btnPing" VerticalAlignment="Top" Width="75" Click="btnPing_Click" />
    <TextBlock Height="115" HorizontalAlignment="Left" Margin="14,54,0,0" Name="textBlockMessage" Text="" VerticalAlignment="Top" Width="345" />
</Grid>

次に、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 SilverlightPing.PingService;

namespace SilverlightPing
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
        }

        /// <summary>
        /// [PING]ボタンクリック時の処理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnPing_Click(object sender, RoutedEventArgs e)
        {            
            PingClient pc = new PingClient();
            pc.ExecutePingCompleted += new EventHandler<ExecutePingCompletedEventArgs>(pc_ExecutePingCompleted);

            // Pingの実行
            pc.ExecutePingAsync(txtHost.Text);            

        }

        /// <summary>
        /// Ping完了時の処理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void pc_ExecutePingCompleted(object sender, ExecutePingCompletedEventArgs e)
        {
            // 実行結果を表示
            textBlockMessage.Text = e.Result.ToString();
        }
    }
}

上記について補足説明。

まず PingServiceを使用できるようにするため、using SilverlightPing.PingService; を追加している。

次に[Ping]ボタンがクリックされたときのイベントbtnPing_Clickでは、PingClientクラスのインスタンスを作成してしている。
このPingClientクラスは、PingServiceを作成したときに自動で生成されたもので「WCFサービス名Clinent」という名称になる。
WCFサービスはPingという名前で作成したので、PingClientというクラスが自動で生成されたと言うことである。

で、Pingの実行が完了したときのイベントとして、pc_ExecutePingCompleted を追加している。
これにより、Pingの実行完了をイベントで取得し、TextBlockへメッセージを表示している。

以上でSilverlightからPingを実行するアプリの作成は終わり。

ちなみに、このアプリでyahooに対してPingをしてみたところ下記のようになった。

コメント

タイトルとURLをコピーしました