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