Método IVsDataHostService.BeginInvokeOnUIThread

Realiza de forma assíncrona um método especificado em execução principal de segmentos (UI) no processo do Visual Studio, com a lista de argumentos especificada.

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

Sintaxe

'Declaração
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

Parâmetros

  • method
    Tipo: System.Delegate
    Um delegado a um método que tenham mesmo número de parâmetros e tipo que estão contidos no parâmetro de args .
  • args
    Tipo: array<System.Object[]
    Uma matriz de objetos para passar como argumentos para o método especificado.Este parâmetro pode ser nulluma referência nula (Nothing no Visual Basic) se o método não leva nenhum argumento.

Valor de retorno

Tipo: System.IAsyncResult
Uma instância de IAsyncResult que representa o resultado da operação.

Comentários

Este método é útil para situações que funcionam com vários segmentos em um thread em segundo plano e periodicamente precisam de notificar o encadeamento de interface de usuário de atualizações para a operação.Esses cenários incluem lançar os eventos que são tratados por componentes COM de único thread em código nativo.

Quando esse método é chamado, enviar uma mensagem à fila de mensagens do windows no encadeamento de interface do usuário, que no processamento chama o método especificado.Este método é assíncrona, o que significa que o segmento de chamada é retorna imediatamente depois que a mensagem foi lançada.A instância retornado de IAsyncResult pode ser utilizada pelo segmento de plano de fundo para determinar quando o processamento de esta mensagem no encadeamento de interface de usuário terminado.

Exemplos

O código a seguir demonstra o uso de esse método chamar um serviço nativo do Visual Studio que não pode ser acessado de um segmento de plano de fundo.

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
    }
}

Segurança do .NET Framework

Consulte também

Referência

IVsDataHostService Interface

Namespace Microsoft.VisualStudio.Data.Core