0

戻り値の型を Task として定義するコア クラス ライブラリに、リポジトリ用のインターフェイスがたくさんあります。これらのインターフェイスは、他のプロジェクトで非同期メソッドを定義するために使用されます。

これらの同じインターフェイスを Xamarain monodroid プロジェクトに実装する必要があり、MonoDroid ではまだサポートされていないため、async await を使用せずに同じ戻り値の型を使用する方法を考えていました。可能であれば、既存のコア ライブラリ インターフェイスをまったく変更したくありません。

4

1 に答える 1

1

技術的には、 /を使用する必要はありませ。「手作業で」行うよりもはるかに簡単です。実装は、まだ開始されていない(該当する場合) を返す必要があります。asyncawaitTasknull

TAP ドキュメントには、いくつかの有用なテクニックとガイドラインがあります。重要なタイプの 1 つはTaskCompletionSource<TResult>、非同期実装 (APM など) をラップするために使用できるものです。同期実装では、(Task.FromResultこれ.TaskCompletionSourceTask.Factory.StartNew Task.RunContinueWith

Taskつまり、返されたs が常に開始されている限り、.NET 4.0 TPL テクニックをすべて使用できます。( unstarted を取得する唯一の方法Taskは、コンストラクターを使用してTask構築し、 を呼び出さStartないことです。したがって、これを行わない限り、問題はありません。)

于 2013-03-05T14:49:53.567 に答える