言語

JoinableTaskFactory.SwitchToMainThreadAsync メソッド

定義

オーバーロード

名前 説明
SwitchToMainThreadAsync(CancellationToken)

デッドロックと再入の両方を軽減する方法で、メイン スレッドで継続を実行する待機可能な文字列を取得します。

SwitchToMainThreadAsync(Boolean, CancellationToken)

デッドロックと再入の両方を軽減する方法で、このインスタンスが初期化された同期コンテキストで継続を実行する待機可能なユーザーを取得します。

SwitchToMainThreadAsync(CancellationToken)

デッドロックと再入の両方を軽減する方法で、メイン スレッドで継続を実行する待機可能な文字列を取得します。

public Microsoft.VisualStudio.Threading.JoinableTaskFactory.MainThreadAwaitable SwitchToMainThreadAsync(System.Threading.CancellationToken cancellationToken = default);
member this.SwitchToMainThreadAsync : System.Threading.CancellationToken -> Microsoft.VisualStudio.Threading.JoinableTaskFactory.MainThreadAwaitable
Public Function SwitchToMainThreadAsync (Optional cancellationToken As CancellationToken = Nothing) As JoinableTaskFactory.MainThreadAwaitable

パラメーター

cancellationToken
CancellationToken

呼び出し元が既にメイン スレッドに存在する場合でも、取り消しによってスレッド プール スレッドの継続が直ちにスケジュールされ、継続によって OperationCanceledExceptionがスローされるトークン。

返品

待機可能。

例外

呼び出し元が既にメイン スレッド上にある場合でも、 cancellationToken が取り消された場合、待機中の呼び出し元でスローされます。

注釈

private async Task SomeOperationAsync() {
    // on the caller's thread.
    await DoAsync();

    // Now switch to a threadpool thread explicitly.
    await TaskScheduler.Default;

    // Now switch to the Main thread to talk to some STA object.
    await this.JobContext.SwitchToMainThreadAsync();
    STAService.DoSomething();
}

所有する JoinableTaskContextnullSynchronizationContextで作成された場合、このメソッドは影響を受けず、呼び出し元は元のスレッドで実行を続行します。

適用対象

SwitchToMainThreadAsync(Boolean, CancellationToken)

デッドロックと再入の両方を軽減する方法で、このインスタンスが初期化された同期コンテキストで継続を実行する待機可能なユーザーを取得します。

public Microsoft.VisualStudio.Threading.JoinableTaskFactory.MainThreadAwaitable SwitchToMainThreadAsync(bool alwaysYield, System.Threading.CancellationToken cancellationToken = default);
member this.SwitchToMainThreadAsync : bool * System.Threading.CancellationToken -> Microsoft.VisualStudio.Threading.JoinableTaskFactory.MainThreadAwaitable
Public Function SwitchToMainThreadAsync (alwaysYield As Boolean, Optional cancellationToken As CancellationToken = Nothing) As JoinableTaskFactory.MainThreadAwaitable

パラメーター

alwaysYield
Boolean

メイン スレッドで既に実行されている場合でも呼び出し元が生成する必要があるかどうかを示す値。

cancellationToken
CancellationToken

呼び出し元が既にメイン スレッドに存在する場合でも、取り消しによってスレッド プール スレッドの継続が直ちにスケジュールされ、継続によって OperationCanceledExceptionがスローされるトークン。

返品

待機可能。

例外

呼び出し元が既にメイン スレッド上にある場合でも、 cancellationToken が取り消された場合、待機中の呼び出し元でスローされます。

注釈

private async Task SomeOperationAsync()
{
    // This first part can be on the caller's thread, whatever that is.
    DoSomething();

    // Now switch to the Main thread to talk to some STA object.
    // Supposing it is also important to *not* do this step on our caller's callstack,
    // be sure we yield even if we're on the UI thread.
    await this.JoinableTaskFactory.SwitchToMainThreadAsync(alwaysYield: true);
    STAService.DoSomething();
}

適用対象