I have a method which returns a Task where the implementation may or may not need to perform a slow operation in order to retrieve the result. I would like to be able to si
If you have a synchronous version of the method that returns the result you can do the following
Task<String>(()=> Hello(Name));
The hello method would look like below.
public String Hello(String Name)
{
return "Hello " + Name;
}
Beginning with .NET 4.5, you can use the Task.FromResult<T>() static method for exactly this purpose:
return Task.FromResult(_Cache[key]);
You could use a TaskCompletionSource<TResult>:
var tcs = new TaskCompletionSource<Foo>();
tcs.SetResult(_Cache[key]);
return tcs.Task;
(Note that if _Cache
is a Dictionary<TKey, TValue>
you could use TryGetValue
to make it a single lookup.)