Silverlight 中的本地消息传递
在 Silverlight 应用程序中进行本地通信。
引言
新的 Silverlight 3.0 允许插件以特定名称暴露为监听器,其他插件实例可以通过该名称来寻址它。 如果你曾经使用过命名管道进行进程间通信,你可能会发现本地连接非常相似。 你可以使用两个类来建立连接:LocalMessageReceiver
和 LocalMessageSender
。
Using the Code
以下是 LocalMessageSender
的示例
Dim lms As System.Windows.Messaging.LocalMessageSender = _
New System.Windows.Messaging.LocalMessageSender("receiveParent", _
System.Windows.Messaging.LocalMessageSender.Global)
'you can restrict sending messages to any domain
以下是 LocalMessageReceiver
的示例
Dim lmr As System.Windows.Messaging.LocalMessageReceiver = _
New System.Windows.Messaging.LocalMessageReceiver("receiveParent", _
Messaging.ReceiverNameScope.Global,_
System.Windows.Messaging.LocalMessageReceiver.AnyDomain)
AddHandler lmr.MessageReceived,AddressOf HandleMessage
'attach message receive handler
'Listen global,receive any domain
Try
lmr.Listen()
Catch ex As System.Windows.Messaging.ListenFailedException
'if there is already a receiver with the name 'receiveParent'
'LocalMessageReceiver throws exception
End Try
发送消息
lms.SendAsync("Message To Send")
接收消息
Private Sub HandleMessage(ByVal sender as Object, _
Byval e as ByVal e As System.Windows.Messaging.MessageReceivedEventArgs)
'process message...
End Sub
如果你的消息格式复杂,你可以使用 XML 或 JSON 格式发送消息。
请记住,最大消息长度为 40 KB。 (参考。)
关注点
我发现监听器使用唯一的接收器名称。 当你使用具有相同接收器名称的监听器时,它会抛出异常。 如果我们想在计算机上使我们的应用程序成为单实例,这可能会帮助我们!
历史
- 2009.11.19 - 首次发布。