用户通过导航到指定的网址在浏览器中启动silverlight应用程序。
用户然后打开另一个浏览器并通过导航到相同的URL启动相同的silverlight应用程序。
应用程序的第二个实例是否可以检测到已在同一台计算机上运行实例?
如果两个应用程序都在同一个浏览器实例中运行,它能检测到自己吗?
我希望答案是“不”,但我认为无论如何我会问它。否则我相信我将不得不设置一个web服务并让每个实例自己注册并向同一IP的其他实例发送请求。这听起来合理吗?
答案 0 :(得分:6)
我认为您可能正在寻找LocalMessageSender和LocalMessageReceiver。我相信这些是Silverlight 3中的新类,允许在同一台本地计算机上运行的两个Silverlight应用程序进行通信。
更多细节:Communication Between Local Silverlight-Based Applications(msdn)
答案 1 :(得分:5)
这样可行,我自己做了。来自Microsoft站点的此代码演示了如何设置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 :(得分:0)
我认为你是对的,你无法进行跨应用程序,但你可以在一个浏览器实例中使用cookie或Isolated Storage来完成。