Silverlight雜記-本地程序間的互通

作者: 撞破南墻  來源: 博客園  發布時間: 2010-12-26 21:49  閱讀: 406 次  推薦: 0   原文鏈接   [收藏]  

  只要使用到兩個類一個用來發送一個用來接收。可以有多個發送端,但只能有一個接收端。

  來段demo

public partial class localcoon : UserControl {
       
public localcoon() {
           InitializeComponent();
           
//
           _sender = new LocalMessageSender("InAction", LocalMessageSender.Global);
           textBox1.TextChanged 
+= (s, e) => {
               {
                   _sender.SendAsync(textBox1.Text);
               }
           };
       }
       
private LocalMessageSender _sender;
       
private void button1_Click(object sender, RoutedEventArgs e1) {
           
//表示兩個基于 Silverlight 的應用程序之間的本地消息傳遞通道的接收端。
           LocalMessageReceiver _receive;
           _receive 
= new LocalMessageReceiver("InAction",
                ReceiverNameScope.Global, LocalMessageReceiver.AnyDomain);
           _receive.Listen();
           _receive.MessageReceived 
+= (s, e) => {
               textBlock3.Text 
=
                  "Message: " + e.Message + Environment.NewLine +
                  "NameScope " + e.NameScope +
                  " completed." + Environment.NewLine +
                  "Response: " + e.Response + Environment.NewLine +
                  "ReceiverName: " + e.ReceiverName + Environment.NewLine +
//獲取此發送方會將消息發送到的 LocalMessageReceiver 的名稱。
                  "SenderDomain: " + e.SenderDomain;//獲取此發送方會將消息發送到的 LocalMessageReceiver 的域
           };
       }
   }

25

  其中一個是IE9 一個是 opera瀏覽器。一些模糊的概念1域。詳見擴展閱讀

域(Domain)”和“應用程序域(AppDomain)”不是一回事。域表明了Silverlight應用程序的位置信息,諸如:“www.myuniversity.edu.cn”之類,而應用程序域則代表了Silverlight應用程序的運行環境,Silverlight插件在裝載一個Silverlight應用程序時,會為其創建一個應用程序域作為其運行環境。

假設某網頁使用多個<object>元素承載了多個Silverlight應用程序,則Silverlight插件會為每個Silverlight應用程序創建相互獨立的應用程序域,這些Silverlight應用程序的“域”可以相同(只要來源于同一個網站),也可以不同(如果來源于不同的網站)

26

  自定義的時候可以是

 
Receiver = new LocalMessageReceiver("InAction",
ReceiverNameScope.Global,

new string[] {"www.baidu.com",www.xxx.com});

  如果想指定任意可以是

4

其最終是調用下面函數發送的

 
[DllImport("agcore", EntryPoint="LocalMessageSend")]
private static extern uint LocalMessageSendNative
(IntPtr nativePeerPtr, 
uint cMessage, [MarshalAs(UnmanagedType.LPWStr)] string message, 
uint cReceiverName, [MarshalAs(UnmanagedType.LPWStr)] string receiverName,
 
uint cReceiverDomain, [MarshalAs(UnmanagedType.LPWStr)] string receiverDomain, uint managedKey);
0
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()