Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
- Confiança total para o chamador imediato. O membro não pode ser usado por código parcialmente confiável. Para obter mais informações, consulte Usando bibliotecas de código parcialmente confiáveis.