Esempio n. 1
0
        public static void RunApplet(string appUrl, EventHandler onAddInAvailableAsync)
        {
            var host = new XProcAddInHost();

            host.AddInAvailableAsync += onAddInAvailableAsync;
            RunApplet(appUrl, host);
        }
Esempio n. 2
0
        //public void ExecuteApplet(string url, RunMode mode)
        //{
        //    var ss = url.Split('/');
        //    var appletName = ss[ss.Length - 1].ToLower();
        //    RunApplet(url, mode, appletName);
        //}


        private static void RunApplet(string appletUri, XProcAddInHost host)
        {
            // Do all startup work asyncrhonously for better responsiveness.
            Action d = delegate
            {
                try
                {
                    var site = new XProcAddInSite(host);
                    // Register the site object with RemotingServices so that the add-in can connect to it.
                    string addinSiteUri = "site" + (++_addinCounter);
                    RemotingServices.Marshal(site, addinSiteUri);
                    addinSiteUri = Channel.GetChannelUri() + "/" + addinSiteUri;
                    Ipc          = addinSiteUri.Base64Encode();
                    Executable   = appletUri;
                    Channel.StartListening(null);
                    StartApplet(appletUri);
                }
                catch (Exception exception)
                {
                    Logger.Error(exception.GetCombinedMessages());
                }
            };

            d.BeginInvoke(null, null);
        }