Share via


IVsDataHostService.UIThread Property

Gets the main (UI) thread running in the Visual Studio process.

Namespace:  Microsoft.VisualStudio.Data.Core
Assembly:  Microsoft.VisualStudio.Data.Core (in Microsoft.VisualStudio.Data.Core.dll)

Syntax

'Declaration
ReadOnly Property UIThread As Thread
Thread UIThread { get; }
property Thread^ UIThread {
    Thread^ get ();
}
abstract UIThread : Thread with get
function get UIThread () : Thread

Property Value

Type: System.Threading.Thread
The main (UI) thread running in the Visual Studio process.

Remarks

This property is useful for determining whether code is currently running on the main thread of the Visual Studio process. This is often useful surrounding calls to the InvokeOnUIThread or BeginInvokeOnUIThread methods to avoid the overhead of a dynamic delegate invoke.

Examples

The following code demonstrates a typical use of the UIThread property to determine whether a method that must run on the UI thread can be called directly or must be dynamically invoked to marshal the call between threads.

using System;
using System.Threading;
using Microsoft.VisualStudio.Data.Core;
using Microsoft.VisualStudio.Shell.Interop;

public class DdexHostSvcExample2
{
    public static void UpdateUI(IVsDataHostService hostService)
    {
        if (Thread.CurrentThread == hostService.UIThread)
        {
            // Called on UI thread, directly call method
            ActuallyUpdateUI(hostService);
        }
        else
        {
            // Called from background thread, begin invoke on UI thread
            hostService.BeginInvokeOnUIThread(
                new UpdateUIDelegate(ActuallyUpdateUI),
                hostService);
        }
    }

    private delegate void UpdateUIDelegate(IVsDataHostService hostService);

    private static void ActuallyUpdateUI(IVsDataHostService hostService)
    {
        IVsUIShell uiShell = hostService.GetService<IVsUIShell>();
        uiShell.UpdateCommandUI(0); // fImmediateUpdate == false
    }
}

.NET Framework Security

See Also

Reference

IVsDataHostService Interface

Microsoft.VisualStudio.Data.Core Namespace