12
私は、リソースを取得するクラスを用意しています。 クラスがリソースを取得するための非同期メソッドを公開します。タスクを使用して条件付きでコードを非同期で実行する方法
public Task<object> GetResourceAsync(string resourceName)
{
return Task.Factory.StartNew<object>(() =>
{
// look in cache
// if not found, get from disk
// return resource
});
}
クライアントコードは、次のようになります。
myResourceProvider.GetResourceAsync("myResource")
.ContinueWith<object>(t => Console.WriteLine("Got resource " + t.Result.ToString()));
この方法では、バックグラウンドスレッドが常に使用されます。しかし、オブジェクトがキャッシュ内に見つかった場合、コードを非同期に実行する必要はありません。 キャッシュ内に見つかった場合は、すぐにリソースを返したいので、別のスレッドを使用する必要はありません。
ありがとうございました。
これはまさに私です探していたありがとう! –
+1私はこの質問をしていましたが(http://stackoverflow.com/questions/15316613/real-life-scenarios-for-using-taskcompletionsourcet)、今私はそれをいつ使うべきかを見ることができます。 –
@joe Task.FromResultのこのコードを拡張して(解決策を追加してください) –