65.9K
CodeProject 正在变化。 阅读更多。
Home

Silverlight 中的本地消息传递

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (2投票s)

2009年11月19日

MIT
viewsIcon

17848

downloadIcon

179

在 Silverlight 应用程序中进行本地通信。

引言

新的 Silverlight 3.0 允许插件以特定名称暴露为监听器,其他插件实例可以通过该名称来寻址它。 如果你曾经使用过命名管道进行进程间通信,你可能会发现本地连接非常相似。 你可以使用两个类来建立连接:LocalMessageReceiverLocalMessageSender

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 - 首次发布。
© . All rights reserved.