Silverlight可以检测或通过浏览器实例进行通信吗?

yam*_*pog 4 silverlight

用户通过导航到给定的URL在其浏览器中启动silverlight应用程序.

用户然后打开另一个浏览器并通过导航到相同的URL启动相同的silverlight应用程序.

应用程序的第二个实例是否可以检测到已在同一台计算机上运行实例?

如果两个应用程序都在同一个浏览器实例中运行,它能检测到自己吗

我希望答案是"不",但我认为无论如何我会问它.否则我相信我将不得不设置一个web服务并让每个实例自己注册并向同一IP的其他实例发送请求.这听起来合理吗?

Chr*_*ron 6

我想你可能正在寻找LocalMessageSenderLocalMessageReceiver.我相信这些是Silverlight 3中的新类,允许在同一台本地计算机上运行的两个Silverlight应用程序进行通信.

更多细节:基于Silverlight的本地应用程序之间的通信(msdn)


Mic*_*ton 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'.";
        }
    }
Run Code Online (Sandbox Code Playgroud)

  • 此外,这不仅适用于不同的Web浏览器(但在同一台计算机上),即使该人员使用远程桌面以及本地计算机登录该站点. (2认同)