Tengo una clase encargada de recuperar recursos que también los almacena en caché para un acceso rápido. La clase expone un método asíncrono para la recuperación de un recurso:Cómo ejecutar un código de forma asincrónica usando las tareas
public Task<object> GetResourceAsync(string resourceName)
{
return Task.Factory.StartNew<object>(() =>
{
// look in cache
// if not found, get from disk
// return resource
});
}
código continuación, el cliente tiene el siguiente aspecto:
myResourceProvider.GetResourceAsync("myResource")
.ContinueWith<object>(t => Console.WriteLine("Got resource " + t.Result.ToString()));
De esta manera, un subproceso de fondo se utiliza siempre. Sin embargo, no deseo que el código se ejecute de forma asíncrona si el objeto se encontró en la memoria caché. Si se encontró en el caché, me gustaría devolver el recurso de inmediato y no tener que usar otro hilo.
Gracias.
Esto es exactamente lo que yo estaba buscando. ¡Gracias! –
+1 Estaba haciendo esta pregunta (http://stackoverflow.com/questions/15316613/real-life-scenarios-for-using-taskcompletionsourcet) y ahora puedo ver cuándo debería usarla. –
@joe ¿puede mejorar este código (agregue una solución) para Task.FromResult? –