public static void RunApplet(string appUrl, EventHandler onAddInAvailableAsync) { var host = new XProcAddInHost(); host.AddInAvailableAsync += onAddInAvailableAsync; RunApplet(appUrl, host); }
//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); }