다음을 통해 공유


IVsDataHostService.BeginInvokeOnUIThread 메서드

비동기적으로 지정 된 메서드를 실행 하 주 (UI) 스레드에서 지정 된 인수 목록에는 Visual Studio 프로세스를 실행 합니다.

네임스페이스:  Microsoft.VisualStudio.Data.Core
어셈블리:  Microsoft.VisualStudio.Data.Core(Microsoft.VisualStudio.Data.Core.dll)

구문

‘선언
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

매개 변수

  • method
    형식: Delegate

    args 매개 변수에 있는 매개 변수의 수 및 형식과 동일한 매개 변수를 갖는 메서드의 대리자입니다.

  • args
    형식: array<Object[]

    지정된 메서드에 인수로 전달하는 개체의 배열입니다. 메서드가 인수를 사용하지 않으면 이 매개 변수는 nullNull 참조(Visual Basic의 경우 Nothing)이 될 수 있습니다.

반환 값

형식: IAsyncResult
IAsyncResult 이 작업의 결과 나타내는 인스턴스입니다.

설명

이 메서드는 작업을 백그라운드 스레드에서 수행 하 고 정기적으로 업데이트 하는 작업의 UI 스레드를 알려 주어 야 하는 다중 스레드 시나리오에 유용 합니다. 이러한 시나리오는 단일 스레드 COM 구성 요소를 네이티브 코드에 의해 처리 되는 이벤트를 발생 시키는 포함 됩니다.

이 메서드를 호출 하면 처리에 지정 된 메서드 호출 UI 스레드가 Windows 메시지 큐에 메시지를 게시 합니다. 이 메서드는 비동기 메시지 게시 된 후 호출 하는 스레드 반환 됩니다 의미입니다. 반환 되는 IAsyncResult 인스턴스 사용 백그라운드 스레드에서 UI 스레드에서이 메시지의 처리가 완료 된 시기를 확인할 수 있습니다.

예제

다음 코드 호출할 네이티브 Visual Studio 서비스는 백그라운드 스레드에서 액세스할 수 없습니다이 메서드의 사용 방법을 보여 줍니다.

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

.NET Framework 보안

참고 항목

참조

IVsDataHostService 인터페이스

Microsoft.VisualStudio.Data.Core 네임스페이스