zoukankan      html  css  js  c++  java
  • 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

    原文地址:http://www.cnblogs.com/nasa/archive/2009/10/19/sl3-LocalConnection.html

  • 相关阅读:
    Android BitmapFactory.Options
    Android TabHost
    Android 黑色样式menu
    Android Tab与TabHost
    Android Theme
    Activity 四种launchMode
    IOS xcode安装
    BaseActivity合集
    自定义BaseActivity
    Fragment 底部菜单栏
  • 原文地址:https://www.cnblogs.com/jacle169/p/2810014.html
Copyright © 2011-2022 走看看