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.cnblogs.com/nasa/archive/2009/10/19/sl3-LocalConnection.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?