Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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
- 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, consultez Utilisation de bibliothèques à partir de code d'un niveau de confiance partiel.