2010-04-30 80 views
4

用戶通過導航到給定的URL在其瀏覽器中啓動Silverlight應用程序。Silverlight可以通過瀏覽器實例檢測或通信嗎?

用戶然後打開另一個瀏覽器並通過導航到相同的URL來啓動相同的Silverlight應用程序。

應用程序的第二個實例是否可以檢測到已經有一個實例在同一臺計算機上運行?

如果兩個應用程序都在同一個瀏覽器實例中運行,它能檢測到它自己嗎?

我希望答案是'不',但認爲我會問它無論如何。否則,我相信我將不得不建立一個web服務,並讓每個實例註冊自己並將請求發送到來自同一IP的其他實例。這聽起來合理嗎?

+1

如果多個用戶從公司連接網絡?對於你的服務器,他們看起來就像是來自同一個IP地址 – 2010-04-30 20:21:34

回答

0

我認爲你是對的,你不能跨越應用程序,但你可以在一個瀏覽器實例中使用cookies或Isolated Storage來完成。

5

這會的工作,我已經做到了我自己。這從微軟網站的代碼演示瞭如何建立一個的LocalMessage「接收器」。如果它拋出一個錯誤,這是因爲Silverlight應用程序的另一個實例已經在運行。

public Receiver() 
    { 
     InitializeComponent(); 

     LocalMessageReceiver messageReceiver = 
      new LocalMessageReceiver("receiver", 
      ReceiverNameScope.Global, LocalMessageReceiver.AnyDomain); 
     messageReceiver.MessageReceived += messageReceiver_MessageReceived; 
     try 
     { 
      messageReceiver.Listen(); 
     } 
     catch (ListenFailedException) 
     { 
      output.Text = "Cannot receive messages." + Environment.NewLine + 
       "There is already a receiver with the name 'receiver'."; 
     } 
    } 
+2

此外,這不僅適用於不同的網絡瀏覽器(但在同一臺計算機上),即使用戶使用遠程桌面登錄到網站也在他們的本地計算機上。 – 2010-04-30 20:53:27

相關問題