在Silverlight 3 中添加了客户端不同应用程序之间的通信机制,当一台电脑上同时运行多个Silverlight 应用程序的时候,本地消息通讯可以在不同的Silverlight之间创建一个消息通道,有点像是一个Socket链接,一方在监听,一方发送。
发送端
public partial class LM_Sender : UserControl { //定¨义?本?地?消?息¢发¢送í对?象ó,?这a个?最?关?键ü,?接ó收?方?和í发¢送í方?的?实μ例y名?必?须?一?样ù才?行D,?好?比èMQ的?通¨道à一?样ù private LocalMessageSender msgSender = new LocalMessageSender("terryfeng"); public LM_Sender() { InitializeComponent(); this.Loaded += new RoutedEventHandler(LM_Sender_Loaded); } void LM_Sender_Loaded(object sender, RoutedEventArgs e) { //提á前°加ó载?,?创′建¨消?息¢发¢送í完ê成é的?事?件t处|理í msgSender.SendCompleted += new EventHandler<SendCompletedEventArgs>(msgSender_SendCompleted); } private void btnSent_Click(object sender, RoutedEventArgs e) { //发¢送í消?息¢ msgSender.SendAsync(tbInput.Text); } void msgSender_SendCompleted(object sender, SendCompletedEventArgs e) { //显?示?回?复′的?消?息¢ MessageBox.Show(e.Response); } }
接收端
public partial class LM_Rec : UserControl { public LM_Rec() { InitializeComponent(); this.Loaded += new RoutedEventHandler(LM_Rec_Loaded); } void LM_Rec_Loaded(object sender, RoutedEventArgs e) { //创′建¨接ó收?消?息¢对?象ó LocalMessageReceiver msgRec = new LocalMessageReceiver("terryfeng"); //创′建¨接ó收?消?息¢的?事?件t处|理í msgRec.MessageReceived += new EventHandler<MessageReceivedEventArgs>(msgRec_MessageReceived); //开a始?侦ì听y msgRec.Listen(); } void msgRec_MessageReceived(object sender, MessageReceivedEventArgs e) { //显?示?收?到?的?消?息¢ tbkRec.Text = e.Message; //反′馈?消?息¢给?发¢送í者? e.Response = "我ò收?到?消?息¢了?,?谢?谢?!?"; } }
冯瑞涛
分类:
[05] Silverlight
【推荐】国内首个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如何颠覆传统软件测试?测试工程师会被淘汰吗?