Task で拡張メソッド GetAwaiter を提供することにより、.Net 4.0 で独自の TaskAwaiter を作成できますが、.Net 4.5 でコードを実行する場合、これは不可能です。
.Net 4.5 の Task クラスには GetAwaiter というメソッドがあり、私の拡張メソッドは決して呼び出されません。
私の 1 つのコメント: 別のクラス (Task ではない) でカスタム awaiter を作成できますが、非同期メソッドは Task または void のみを返すことができ、すべてのタスク/非同期メソッド呼び出しをラップすることは実用的/エレガントではありません。
私の2つのコメント:タスクが作成された(または待機された)ときにデータを自動的に保存し、同期コンテキストを変更せずに継続メソッドでこのデータを取得する必要があります。
私の 3 コメント: .Net 4.0 と私のカスタム TaskAwaiter では、すべてが期待どおりに機能します。