IVsDataHostService.BeginInvokeOnUIThread, méthode

Exécute de façon asynchrone une méthode spécifiée sur l'exécution principal du thread (interface utilisateur) dans le processus de Visual Studio, avec la liste spécifiée d'arguments.

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

Syntaxe

'Déclaration
Function BeginInvokeOnUIThread ( _
    method As Delegate, _
    ParamArray args As Object() _
) As IAsyncResult
IAsyncResult BeginInvokeOnUIThread(
    Delegate method,
    params Object[] args
)
IAsyncResult^ BeginInvokeOnUIThread(
    Delegate^ method, 
    ... array<Object^>^ args
)
abstract BeginInvokeOnUIThread : 
        method:Delegate * 
        args:Object[] -> IAsyncResult 
function BeginInvokeOnUIThread(
    method : Delegate, 
    ... args : Object[]
) : IAsyncResult

Paramètres

  • method
    Type : System.Delegate
    Délégué vers une méthode qui accepte des paramètres du même nombre et du même type que ceux qui sont contenus dans le paramètre args.
  • args
    Type : array<System.Object[]
    Tableau d'objets à passer comme arguments à la méthode spécifiée.Ce paramètre peut être nullune référence null (Nothing en Visual Basic) si la méthode n'accepte aucun argument.

Valeur de retour

Type : System.IAsyncResult
Une instance d' IAsyncResult qui représente le résultat de cette opération.

Notes

Cette méthode est utile pour les scénarios multithreads qui travaillent sur un thread d'arrière-plan et régulièrement doivent informer le thread d'interface utilisateur des mises à jour de l'exécution.De tels cas comprennent déclencher des événements qui sont gérés par des composants COM monothread en code natif.

Lorsque cette méthode est appelée, elle publie un message à la file d'attente de messages des fenêtres du thread d'interface utilisateur, qui fait appel à traiter la méthode spécifiée.Cette méthode est asynchrone, ce qui signifie que le thread appelant est retourne immédiatement une fois que le message a été publié.L'instance retournée d' IAsyncResult peut être utilisée par le thread d'arrière-plan pour déterminer quand le traitement de ce message sur le thread d'interface utilisateur est terminé.

Exemples

Le code suivant illustre l'utilisation de cette méthode à appeler un service natif Visual Studio qui n'est pas accessible à partir d'un thread d'arrière-plan.

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

public class DdexHostSvcExample3
{
    public static void UpdateUI(IVsDataHostService hostService)
    {
        if (hostService.UIThread == Thread.CurrentThread)
        {
            // Called on UI thread, directly call method
            ActuallyUpdateUI(hostService);
        }
        else
        {
            // Called from background thread, invoke on UI thread
            hostService.InvokeOnUIThread(
                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