private void WriteLineCore(string text) { // Extremely naive implementation of a Windows Pane logger - the assumption here is that text is rarely written, // so transitions to the UI thread are uncommon and are fire and forget. If we start writing to this a lot (such // as via build), then we'll need to implement a better queueing mechanism. _threadingService.Fork(async() => { IVsOutputWindowPane pane = await _outputWindowProvider.GetOutputWindowPaneAsync() .ConfigureAwait(true); pane.OutputStringNoPump(text + Environment.NewLine); }, options: ForkOptions.HideLocks | ForkOptions.StartOnMainThread); }
public void WriteLine(StringFormat format) { if (IsEnabled) { string text = format.Text + Environment.NewLine; // Extremely naive implementation of a Windows Pane logger - the assumption here is that text is rarely written, // so transitions to the UI thread are uncommon and are fire and forget. If we start writing to this a lot (such // as via build), then we'll need to implement a better queueing mechanism. _threadingService.Fork(async() => { IVsOutputWindowPane pane = await _outputWindowProvider.GetOutputWindowPaneAsync(); pane.OutputStringNoPump(text); }, options: ForkOptions.HideLocks | ForkOptions.StartOnMainThread, factory: _threadingService.JoinableTaskFactory); } }