public OutputToolWindowControl() { InitializeComponent(); ThreadHelper.JoinableTaskFactory.Run(async() => { await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); Dte = (DTE)await OutputToolWindowCommand.Instance.ServiceProvider.GetServiceAsync(typeof(DTE)); Events = Dte.Events; SolutionEvents = Events.SolutionEvents; SolutionEvents.Opened += () => Clear(); SolutionEvents.AfterClosing += () => Clear(); }); ScriptManager = new ScriptManager(Dte); FCCOutputBrowser.ObjectForScripting = ScriptManager; TestContainerDiscoverer.UpdateOutputWindow += (sender, args) => { ThreadHelper.JoinableTaskFactory.Run(async() => { await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); if (string.IsNullOrWhiteSpace(args?.HtmlContent)) { Clear(); return; } FCCOutputBrowser.NavigateToString(args.HtmlContent); FCCOutputBrowser.Visibility = Visibility.Visible; }); }; }
public void Handle(NewReportMessage message) { ThreadHelper.JoinableTaskFactory.Run(async() => { await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); FCCOutputBrowser.NavigateToString(message.Report); }); }
private void InvokeScript(string scriptName, params object[] args) { try { if (FCCOutputBrowser.Document != null) { try { // Can use FCCOutputBrowser.IsLoaded but // it is possible for this to be successful when IsLoaded false. FCCOutputBrowser.InvokeScript(scriptName, args); } catch { // missed are not important. Important go through NewReportMessage and NavigateToString } } } catch (ObjectDisposedException) { } }