Silverlight 3.0 中的 Local Connection

现在很多的需求中需要一个插件实例和另一个实例进行通讯。在同一个页面中调用Html、js等来通讯,而这个往往有一些限制,需要专门的去设置一些权限。在Silverlight 3.0 中新增了一个功能使得跨越实例的通讯变得极为的简单,这个功能为本地连接。

通过本地连接就也可以在不同页面间多个Silverlight实例创建通讯通道。这样就可以创建多个基于Silverlight的应用程序或者基于其他技术的内容在一起的复杂布局。

使用本地连接这里有两个关键的类:

  • LocalMessageSender
  • LocalMessageReceiver

发送

创建发送器对象,发送消息并且接收响应实现双向通讯。

 
        private void btnSend_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            LocalMessageSender msgSender = new LocalMessageSender("myReceiver");
            msgSender.SendCompleted += new EventHandler(msgSender_SendCompleted);


            msgSender.SendAsync(txtMessage.Text);
        }


        void msgSender_SendCompleted(object sender, SendCompletedEventArgs e)
        {
            TextBlock tb = new TextBlock();
            if (e.Error != null)
            {
                tb.Text = String.Format("错误: [{0}]", e.Error.Message);
            }
            else
            {
                tb.Text = String.Format("{0}", e.Response == null ? "None" : e.Response);
            }
            spSends.Children.Add(tb);
            xScrollViewer.ScrollToVerticalOffset(xScrollViewer.ScrollableHeight);
        }

接收

创建接收器对象,每个接收器都可以接收来自任意数目的发送器的消息,但是只接收来自指定发送器域的消息。

        void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            receiver = new LocalMessageReceiver("myReceiver");
            receiver.MessageReceived += new EventHandler(receiver_MessageReceived);


            receiver.Listen();
        }


        void receiver_MessageReceived(object sender, MessageReceivedEventArgs e)
        {
            e.Response = "发送成功【" + e.Message + "】";


            TextBlock tb = new TextBlock();
            tb.Text = "接收来自" + e.ReceiverName + "的数据:" + e.Message;
            
            spSends.Children.Add(tb);
            xScrollViewer.ScrollToVerticalOffset(xScrollViewer.ScrollableHeight);
        }

同一页面

多个页面

参考资料

http://msdn.microsoft.com/zh-cn/library/dd833063(VS.95).aspx

http://www.switchonthecode.com/tutorials/silverlight-3-using-local-connections

http://www.wintellect.com/CS/blogs/jprosise/archive/2009/03/26/silverlight-3-s-new-local-connections.aspx

http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2009/03/18/a-quick-look-at-silverlight-3-local-connection.aspx

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏py+selenium

linux 安装weblogic12.1.3.0步骤

需注意:fmw_12.1.3.0.0_wls.jar     需要jdk1.7.0_15以上的版本

1.7K50
来自专栏乐沙弥的世界

配置共享服务器模式

两者完成相同的任务,即处理所有指定的SQL操作。假定从客户端提交一个任意查询(DQL)到数据库服务器不论是专用模式还是共享

29430
来自专栏Aloys的开发之路

VirtualBox相关问题总结

邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: ht...

16330
来自专栏张善友的专栏

在 Windows 上安装Rabbit MQ 指南

rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。他遵循Mozilla Public License开源协议。采用 Erlang 实现...

23090
来自专栏草根专栏

使用Identity Server 4建立Authorization Server (1)

本文内容基本完全来自于Identity Server 4官方文档: https://identityserver4.readthedocs.io/ 官方文档很详...

543100
来自专栏智能大石头

NewLife.Net——开始网络编程

14430
来自专栏coding

django2实战2.创建博客应用创建应用文章表的字段设计激活应用开启后台将post模型注册到后台自定义文章显示字段增加可选操作

上篇创建了一个项目,项目相当于站点,应用即是独立的功能模块。比如:淘宝是一个完整的网站,即是一个项目。而淘宝下的聚划算属于一个应用

18230
来自专栏智能大石头

NewLife.Net——开始网络编程

网络编程的重要性就不说了,先上源码:https://github.com/nnhy/NewLife.Net.Tests

10600
来自专栏草根专栏

使用Identity Server 4建立Authorization Server (6) - js(angular5) 客户端

由于手头目前用项目, 所以与前几篇文章不同, 这次要讲的js客户端这部分是通过我刚刚开发的真是项目的代码来讲解的. 这是后端的代码: https://githu...

63250
来自专栏bboysoul

如何黑入安卓手机(ezsploit)

安装很简单clone git clone https://github.com/rand0m1ze/ezsploit.git cd ezsploit ch...

19020

扫码关注云+社区

领取腾讯云代金券