IVsDataHostService.UIThread プロパティ

Visual Studio プロセスで実行されるメイン (UI) スレッドを取得します。

名前空間:  Microsoft.VisualStudio.Data.Core
アセンブリ:  Microsoft.VisualStudio.Data.Core (Microsoft.VisualStudio.Data.Core.dll 内)

構文

'宣言
ReadOnly Property UIThread As Thread
Thread UIThread { get; }
property Thread^ UIThread {
    Thread^ get ();
}
abstract UIThread : Thread
function get UIThread () : Thread

プロパティ値

型 : System.Threading.Thread
Visual Studio プロセスで実行されるメイン (UI) スレッド。

解説

このプロパティは、コードが Visual Studio のプロセスのメイン スレッドで現在実行されているかどうかを確認する場合に便利です。これは、便利で呼び出しを InvokeOnUIThread に囲まれますまたは動的デリゲートのオーバーヘッドを回避 BeginInvokeOnUIThread のメソッドを呼び出します。

次のコードは UIThread のプロパティの一般的な使用方法を UI スレッドで実行するスレッド間の呼び出しをマーシャリングするためのメソッドを直接呼び出すことができるか、または動的に呼び出す必要があるかどうかを示します。

using System;
using System.Threading;
using Microsoft.VisualStudio.Data.Core;
using Microsoft.VisualStudio.Shell.Interop;

public class DdexHostSvcExample2
{
    public static void UpdateUI(IVsDataHostService hostService)
    {
        if (Thread.CurrentThread == hostService.UIThread)
        {
            // Called on UI thread, directly call method
            ActuallyUpdateUI(hostService);
        }
        else
        {
            // Called from background thread, begin invoke on UI thread
            hostService.BeginInvokeOnUIThread(
                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 名前空間