`
star65225692
  • 浏览: 267600 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类

Silverlight 应用程序之间在客户端通信

阅读更多

要在 Silverlight 应用程序之间的通信,需要建一个信息发送程序和一个信息接收程序,发送端使用 LocalMessageSender 来发送信息,接收端使用 LocalMessageReceiver 来接收信息。

信息发送端:java-javascript.blogcn.com

创建发送端时需要提供一个接收端的名称,同时也可以限定接收端所在的域,如果不提供接收端的域默认为 Global 。

public class MainViewModel : ViewModelBase
{
    private LocalMessageSender messageSender;
    private const int MAXRETRY = 10;
    private int retry = 1;

    public string SendResult
    {
        get;
        private set;
    }

    /// <summary>
    /// Initializes a new instance of the MainViewModel class.
    /// </summary>
    public MainViewModel()
    {
        SendMessageCommand = new RelayCommand<string>(SendMessage);
        messageSender = new LocalMessageSender("receiver1");
        messageSender.SendCompleted += new System.EventHandler<SendCompletedEventArgs>(messageSender_SendCompleted);
    }

    private void messageSender_SendCompleted(object sender, SendCompletedEventArgs e)
    {
        if (e.Error != null)
        {
            if (retry > MAXRETRY)
            {
                SendResult = "Could not send message.";
                RaisePropertyChanged("SendResult");
                return;
            }
            else
            {
                retry++;
                SendMessage(e.Message);
            }
        }
        else
        {
            retry = 1;
            SendResult = string.Concat(e.ReceiverName,":", e.Response);
            RaisePropertyChanged("SendResult");
        }
    }
        
    public RelayCommand<string> SendMessageCommand { get; private set; }
    private void SendMessage(string msg)
    {
        messageSender.SendAsync(msg);
    }
}
 

使用 SendAsync 方法来发送信息,当信息发送成功时引发 SendCompleted 事件,可以通过 SendCompletedEventArgs 的 Response 属性来获取从接收端返回的信息,当信息发送失败时会抛出 SendFailedException ,可以通过 SendCompletedEventArgs 的 Error 属性来获取。

信息接收端:

创建接收端时需要指定接收端的名称,同时也可以限定该名称的范围是限定为全局名称范围还是限定为接收方的特定域和限定接收方可从中接收消息的域。接收端的名称必须在全局范围内唯一,或者在接收端的宿主域内唯一。

public class MainViewModel : ViewModelBase
{
    private LocalMessageReceiver messageReceiver;

    public string Message
    {
        get;
        private set;
    }

    /// <summary>
    /// Initializes a new instance of the MainViewModel class.
    /// </summary>
    public MainViewModel()
    {
        messageReceiver = new LocalMessageReceiver("receiver1");
        messageReceiver.MessageReceived += new System.EventHandler<MessageReceivedEventArgs>(messageReceiver_MessageReceived);
        try
        {
            messageReceiver.Listen();
        }
        catch (ListenFailedException e)
        {
            Message = e.Message;
            RaisePropertyChanged("Message");
        }
    }

    private void messageReceiver_MessageReceived(object sender, MessageReceivedEventArgs e)
    {
        e.Response = "Message received.";
        Message = e.Message;
        RaisePropertyChanged("Message");
    }
}
 

接收端通过 Listen 方法监听信息,当收到信息时引发 MessageReceived 事件,可以通过 MessageReceivedEventArgs 的 Message 属性来获取接收到的信息,同时可以设置 MessageReceivedEventArgs 的 Response 属性给发送端返回一个信息。java

分享到:
评论

相关推荐

    如何在Silverlight客户端和Java应用程序之间进行通信

    一个简单的示例,显示了Silverlight客户端和Java应用程序之间的通信。

    Silverlight2.0功能展示Demo源码

    IsolatedStorageSettings.ApplicationSettings - 按应用程序保存的 key-value 字典表 15、Silverlight(17) - 2.0数据之详解DataGrid, 详解ListBox 介绍 Silverlight 2.0 详解DataGrid, 绑定数据到ListBox: ...

    Visual.Basic.2010.&.NET4.高级编程(第6版)-文字版.pdf

    第iii部分 智能客户端应用程序第14章 windows窗体 543 14.1 system.windows.forms名称空间 543 14.2 窗体的使用 544 14.2.1 设置启动窗体 544 14.2.2 通过sub main显示窗体 545 14.2.3 application类的更...

    企业资产管理系统中通信模型的研究与实现

    为了改善企业资产管理(EAM)系统在用户体验、模块间数据传输效率及耦合度等方面的不足,构建了基于Silverlight与...客户端Silverlight应用程序通过代理调用WCF服务,提高了数据传输效率,降低了系统模块间的耦合性。

    C#调用C++底层代码

    WPF可以编写Web程序或者桌面应用程序,可以直接编译为独立运行的.Exe文件。WPF运行时必须安装.net Framework 3.0。这就要求WPF目前运行的操作系统必须是Windows Vista或者Windows XP SP2。 此外,SilverLight作为...

    SuperSocket服务器应用程序框架-.net

    应用程序域和进程级别的隔离能够满足你大部分的宿主场景; 内置的 SSL/TLS 加密支持; 会话级别的发送队列能够让你通过会话并发的发送数据,并保持高性能和可控性; SuperSocket 的命令处理模式让你的业务逻辑更清晰,...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Activity Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,是一个负责与用户交互的组件 SSH 为 Struts+Spring+Hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。...

Global site tag (gtag.js) - Google Analytics