task_continuation_context クラス

task_continuation_context クラスを使用すると、継続する場所を指定できます。 このクラスは、Windows ランタイム アプリから使用する場合にのみ有用です。 Windows ランタイム アプリ以外の場合、タスク継続の実行コンテキストはランタイムによって決定されるため、構成できません。

構文

class task_continuation_context : public details::_ContextCallback;

メンバー

パブリック メソッド

名前 説明
get_current_winrt_context 現在の winrt スレッド コンテキストを表すタスクの継続コンテキスト オブジェクトを返します。
use_arbitrary タスクの継続コンテキストを作成します。このコンテキストを使用すると、ランタイムで継続用の実行コンテキストを選択できます。
use_current 現在の実行コンテキストを表すタスクの継続コンテキスト オブジェクトを返します。
use_default タスクの既定の継続コンテキストを作成します。
use_synchronous_execution 同期実行コンテキストを表すタスクの継続コンテキスト オブジェクトを返します。

継承階層

_ContextCallback

task_continuation_context

必要条件

ヘッダー: ppltasks.h

名前空間: concurrency

get_current_winrt_context

現在の WinRT スレッド コンテキストを表すタスクの継続コンテキスト オブジェクトを返します。

構文

static task_continuation_context get_current_winrt_context();

戻り値

現在の Windows ランタイム スレッド コンテキスト。 Windows ランタイム コンテキスト以外から呼び出された場合は、空の task_continuation_context を返します。

解説

get_current_winrt_context メソッドは、呼び出し元の Windows ランタイム スレッド コンテキストをキャプチャします。 Windows ランタイム以外の呼び出し元には空のコンテキストを返します。

get_current_winrt_context によって返される値を使用することで、キャプチャされたコンテキスト (STA と MTA) のアパートメント モデルで継続が実行されることをランタイムに対して示すことができます。これは、継続元タスクがアパートメントに対応しているかどうかに関係ありません。 アパートメントに対応するタスクとは、Windows Runtime IAsyncInfo インターフェイスのラップを解除するタスク、またはそのようなタスクの子となるタスクです。

このメソッドは use_current メソッドに似ていますが、C++/CX 拡張機能がサポートされていないネイティブ C++ コードでも使用できます。 これは、ネイティブの呼び出し元と Windows ランタイムの呼び出し元の両方に対して C++/CX に依存しないライブラリコードを記述する上級ユーザーが使用することを目的としています。 この機能が必要な場合を除き、C++/CX クライアントでのみ使用できる use_current メソッドを使用することをお勧めします。

use_arbitrary

タスクの継続コンテキストを作成します。このコンテキストを使用すると、ランタイムで継続用の実行コンテキストを選択できます。

構文

static task_continuation_context use_arbitrary();

戻り値

任意の位置を表すタスクの継続コンテキスト。

解説

この継続コンテキストを使用すると、タスクの継続は、ランタイムが選択したコンテキストで実行されます。これは、継続元タスクがアパートメントに対応している場合でも同様です。

use_arbitrary を使用すると、STA で作成されたアパートメント対応のタスクの継続に関する既定の動作を無効にすることができます。

このメソッドは、Windows ランタイム アプリでのみ使用できます。

use_current

現在の実行コンテキストを表すタスクの継続コンテキスト オブジェクトを返します。

static task_continuation_context use_current();

戻り値

現在の実行コンテキスト。

解説

このメソッドは、正しいアパートメントで継続が実行できるように、呼び出し元の Windows ランタイムのコンテキストをキャプチャします。

use_current によって返される値を使用することで、ランタイムに対して、継続はキャプチャされたコンテキスト (STA と MTA) で実行されることを示すことができます。このような実行は、継続元タスクがアパートメントに対応しているかどうかに関係なく行われます。 アパートメントに対応するタスクとは、Windows Runtime IAsyncInfo インターフェイスのラップを解除するタスク、またはそのようなタスクの子となるタスクです。

このメソッドは、Windows ランタイム アプリでのみ使用できます。

use_default

タスクの既定の継続コンテキストを作成します。

static task_continuation_context use_default();

戻り値

既定の継続コンテキスト。

解説

then メソッドを呼び出すときに継続コンテキスト指定しなかった場合は、既定のコンテキストが使用されます。 Windows 7 以前に対応した Windows アプリケーション、および Windows 8 以降に対応したデスクトップ アプリケーションでは、ランタイムによって、タスクの継続を実行する状況が判別されます。 ただし Windows ランタイム アプリでは、アパートメント対応のタスクの継続に関する既定の継続コンテキストは、then が呼び出されるアパートメントになります。

アパートメントに対応するタスクとは、Windows Runtime IAsyncInfo インターフェイスのラップを解除するタスク、またはそのようなタスクの子となるタスクです。 したがって、Windows ランタイム STA でアパートメント対応のタスクについて継続をスケジュールする場合、継続はその STA で実行されます。

アパートメント以外に対応するタスクの継続は、ランタイムが選択したコンテキストで実行されます。

task_continuation_context::use_synchronous_execution

同期実行コンテキストを表すタスクの継続コンテキスト オブジェクトを返します。

構文

static task_continuation_context use_synchronous_execution();

戻り値

同期実行コンテキスト。

解説

use_synchronous_execution メソッドは、継続タスクをコンテキストで同期的に実行するように強制します。これにより、継続元タスクが完了します。

継続がアタッチされたときに継続元タスクが既に完了している場合、継続は、継続をアタッチするコンテキストで同期的に実行されます。

関連項目

コンカレンシー名前空間