У меня есть класс, отвечающий за извлечение ресурсов, который также кэширует их для быстрого доступа. Класс предоставляет асинхронный метод для извлечения ресурса:
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()));
Таким образом, всегда используется фоновый поток. Однако я не хочу, чтобы код выполнялся асинхронно, если объект был найден в кеше. Если он был найден в кеше, я хотел бы немедленно вернуть ресурс и не использовать другой поток.
Спасибо.