如何在基於 Silverlight 的本地應用程序之間實現通信

該 HTML 示例承載發送應用程序的兩個副本和接收應用程序的一個副本。這說明接收器可以接收來自多個發送器的消息。請自行選擇腳本
核心代碼
<UserControl x:Class="SendingApplication.Sender"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <StackPanel x:Name="LayoutRoot">
        <StackPanel Orientation="Horizontal" >
            <TextBlock Text="Sender" FontSize="20" />
            <Button x:Name="button" Click="Button_Click"
                    Height="20" Margin="20,0,0,0" />
        </StackPanel>
        <TextBlock x:Name="output" />
    </StackPanel>
</UserControl>













C#代碼


由於代碼麻煩vb咋不給出



using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Messaging;

namespace SendingApplication
{
    public partial class Sender : UserControl
    {
        private LocalMessageSender messageSender;

        public Sender()
        {
            InitializeComponent();
            UpdateButton();
            messageSender = new LocalMessageSender(
                "receiver", LocalMessageSender.Global);
            messageSender.SendCompleted += sender_SendCompleted;
            SendMessage("message from Sender constructor");
        }

        private int clickNumber = 1;

        private void UpdateButton()
        {
            button.Content = "send message 'click " + clickNumber + "'";
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            SendMessage("click " + clickNumber);
            clickNumber++;
            UpdateButton();
        }

        private const int MAX_ATTEMPTS = 10000;
        private int attempt = 1;

        private void SendMessage(string message)
        {
            messageSender.SendAsync(message, attempt);
        }

        private void sender_SendCompleted(object sender, SendCompletedEventArgs e)
        {
            if (e.Error != null)
            {
                LogError(e);
                attempt++;
                if (attempt > MAX_ATTEMPTS)
                {
                    output.Text = "Could not send message.";
                    return;
                }
                SendMessage(e.Message);
                return;
            }

            output.Text =
                "Message: " + e.Message + Environment.NewLine +
                "Attempt " + (int)e.UserState + 
                " completed." + Environment.NewLine +
                "Response: " + e.Response + Environment.NewLine +
                "ReceiverName: " + e.ReceiverName + Environment.NewLine + 
                "ReceiverDomain: " + e.ReceiverDomain;

            // Reset attempt counter.
            attempt = 1;
        }

        private void LogError(SendCompletedEventArgs e)
        {
            System.Diagnostics.Debug.WriteLine(
                "Attempt number {0}: {1}: {2}", (int)e.UserState, 
                e.Error.GetType().ToString(), e.Error.Message);
        }

    }
}











html頁面代碼
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<!-- saved from url=(0014)about:internet -->
<head>
  <title>LocalMessaging</title>

  <style type="text/css">
  html, body {
    height: 100%;
    overflow: auto;
  }
  body {
    padding: 0;
    margin: 0;
  }
  #silverlightControlHost1 {
    padding: 0;
    margin: 0;
  }
  #silverlightControlHost2 {
    padding: 0;
    margin: 0;
  }
  </style>
</head>

<body>
  <table border="10" cellpadding="10" cellspacing="10">
    <tr>
      <td>
        <div id="silverlightControlHost1">
          <object data="data:application/x-silverlight-2," 
            type="application/x-silverlight-2" 
            width="400" height="120">
            <param name="source" value="ClientBin/SendingApplication.xap"/>
            <param name="onerror" value="onSilverlightError" />
            <param name="background" value="white" />
          </object>
          <iframe style='visibility:hidden;height:0;width:0;border:0px'>
          </iframe>
        </div>
      </td>
    </tr>
    <tr>
      <td>
        <div id="Div1">
          <object data="data:application/x-silverlight-2," 
            type="application/x-silverlight-2" 
            width="400" height="120">
            <param name="source" value="ClientBin/SendingApplication.xap"/>
            <param name="onerror" value="onSilverlightError" />
            <param name="background" value="white" />
          </object>
          <iframe style='visibility:hidden;height:0;width:0;border:0px'>
          </iframe>
        </div>
      </td>
    </tr>
    <tr>
      <td>
        <div id="silverlightControlHost2">
          <object data="data:application/x-silverlight-2," 
            type="application/x-silverlight-2" 
            width="400" height="120">
            <param name="source" value="ClientBin/ReceivingApplication.xap"/>
            <param name="onerror" value="onSilverlightError" />
            <param name="background" value="white" />
          </object>
          <iframe style='visibility:hidden;height:0;width:0;border:0px'>
          </iframe>
        </div>
      </td>
    </tr>
  </table>
</body>
</html>








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章