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 : DelegateDé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<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 : 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
- Confiance totale accordée à l'appelant immédiat. Ce membre ne peut pas être utilisé par du code d'un niveau de confiance partiel. Pour plus d'informations, voir Utilisation de bibliothèques à partir de code d'un niveau de confiance partiel.