Partager via


IVsDataHostService.UIThread, propriété

Obtient l'exécution principal du thread (interface utilisateur) dans le processus de Visual Studio.

Espace de noms :  Microsoft.VisualStudio.Data.Core
Assembly :  Microsoft.VisualStudio.Data.Core (dans Microsoft.VisualStudio.Data.Core.dll)

Syntaxe

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

Valeur de propriété

Type : Thread
L'exécution principal du thread (interface utilisateur) dans le processus de Visual Studio.

Notes

Cette propriété est utile pour déterminer si le code est en cours de exécution sur le thread principal du processus Visual Studio. Il est souvent utile entourant les appels à InvokeOnUIThread ou les méthodes d' BeginInvokeOnUIThread pour éviter la charge mémoire d'un délégué dynamique appellent.

Exemples

Le code suivant illustre une utilisation typique de la propriété d' UIThread de déterminer si une méthode qui doit s'exécuter sur le thread d'interface utilisateur peut être appelé directement ou dynamiquement doit être appelée pour marshaler l'appel entre les 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
    }
}

Sécurité .NET Framework

Voir aussi

Référence

IVsDataHostService Interface

Microsoft.VisualStudio.Data.Core, espace de noms