IVsOutputWindowPaneNoPump Interface

Implemented by the solution-wrapper to the OutputWindow tool window. It is not guaranteed to be implemented by all COM objects that implement IVsOutputWindowPane, so clients that need pump-free writing to the output window should try to cast to this interface and use it if the cast succeeds, but be prepared to fallback to calling IVsOutputWindowPane::OutputString when the cast fails.

Namespace:  Microsoft.VisualStudio.Shell.Interop
Assembly:  Microsoft.VisualStudio.Shell.Interop.12.0 (in Microsoft.VisualStudio.Shell.Interop.12.0.dll)

Syntax

'Declaration
<InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)> _
<GuidAttribute("5C552B00-38FB-489E-A544-D1AD948D3213")> _
Public Interface IVsOutputWindowPaneNoPump
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
[GuidAttribute("5C552B00-38FB-489E-A544-D1AD948D3213")]
public interface IVsOutputWindowPaneNoPump
[InterfaceTypeAttribute(ComInterfaceType::InterfaceIsIUnknown)]
[GuidAttribute(L"5C552B00-38FB-489E-A544-D1AD948D3213")]
public interface class IVsOutputWindowPaneNoPump
[<InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)>]
[<GuidAttribute("5C552B00-38FB-489E-A544-D1AD948D3213")>]
type IVsOutputWindowPaneNoPump =  interface end
public interface IVsOutputWindowPaneNoPump

The IVsOutputWindowPaneNoPump type exposes the following members.

Methods

  Name Description
Public method OutputStringNoPump Prints text to the output window without pushing a message pump.

Top

Remarks

When the cast fails, the caller probably has a pointer to the actual output window pane itself (not a wrapper) and thus pumping is not expected to occur. When the cast succeeds (and the underlying COM object is the CSUIBuilder), the behavior of each of the OutputString* methods are as follows:

  1. IVsOutputWindowPane::OutputString: Print message, and pushes a full message pump that processes user input (but no idle messages) including processing to execute commands via keybindings.

  2. IVsOutputWindowPane::OutputStringThreadSafe: Print message, and runs a message pump that just skips processing of IDE keybindings. It is a message pump equivalent to that of a modal dialog (it calls TranslateMessage / DispatchMessage). Note that there is no 'thread-safety' about this method. The same STA COM object implements this method as all other methods on this interface and must be invoked on the UI thread.

  3. IVsOutputWindowPaneNoPump::OutputStringNoPum: Print message. No message pumping at all is done. This is the recommended method to call when available because of its safety against reentrancy to the UI thread that can lead to deadlocks on build/deploy cancellation if the build/deploy cannot complete before the call to OutputString*() must return before the build can be considered finished.

See Also

Reference

Microsoft.VisualStudio.Shell.Interop Namespace