当前位置: 首页 > news >正文

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
实例下载

相关文章:

  • Java 获取目录以及子目录下的sql文件
  • IE中iframe标签显示在DIV之上的问题解决方案
  • SharePoint : 使用SPQuery对象时要注意的事项
  • Linux 上安装JDK
  • JUnit-4.13使用报java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing错误
  • vi和vim的基本介绍
  • 流程理解篇-测试篇
  • 简单贪心题(看最多的电视节目)
  • TestDriven.NET 2.0单元测试
  • Spring Boot 2.x (十二):Swagger2的正确玩儿法
  • windows环境下memcache服务器使用经验
  • DIVCNT23 - Counting Divisors
  • 新的博客, 新的里程
  • [学习笔记]Dsu On Tree
  • ExtJS里的Xtype的对应组件
  • [译]如何构建服务器端web组件,为何要构建?
  • Laravel Mix运行时关于es2015报错解决方案
  • Mocha测试初探
  • mysql常用命令汇总
  • Protobuf3语言指南
  • socket.io+express实现聊天室的思考(三)
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 思考 CSS 架构
  • 用mpvue开发微信小程序
  • const的用法,特别是用在函数前面与后面的区别
  • 我们雇佣了一只大猴子...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (第一天)包装对象、作用域、创建对象
  • (二)hibernate配置管理
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)http-server应用
  • (转)大型网站的系统架构
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .NET CORE 第一节 创建基本的 asp.net core
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET Standard 的管理策略
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET中GET与SET的用法
  • .sh
  • /etc/shadow字段详解
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [ C++ ] STL---string类的模拟实现
  • [ 第一章] JavaScript 简史