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
형식: Delegateargs 매개 변수에 있는 매개 변수의 수 및 형식과 동일한 매개 변수를 갖는 메서드의 대리자입니다.
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 보안
- 직접 실행 호출자의 경우 완전히 신뢰합니다. 이 멤버는 부분적으로 신뢰할 수 있는 코드에서 사용할 수 없습니다. 자세한 내용은 부분 신뢰 코드에서 라이브러리 사용를 참조하세요.