Fujiy Util 1.1.0

8/23/2014 12:56:24 AM By Felipe Pessoto

Publiquei uma nova versão do Fujiy Util.

Um detalhe que eu não tinha percebido até alguns dias, o que acontece com código assíncrono já que inicialmente ele não dispara uma Exception?

O problema não é especifico na biblioteca, mas em qualquer código que você use algum tipo de Cache onde faça o cache de uma Task, o que vai ser cada vez mais comum, ainda mais considerando que as chamadas que normalmente usam cache, são assíncronas.

O que acontece é que ao chamas o método a ser cacheado, ele retorna com sucesso uma Task, em Status pendente. Posteriormente ela será "awaited" e possivelmente ser cancelada ou falhar, mas nesse momentoa Task já estava no cache. Então agora antes de retornar qualquer item do tipo Task, verifico se não está com o Status Faulted ou Canceled.

https://www.nuget.org/packages/Fujiy.Util/

Fujiy Util 1.0.0

4/1/2014 2:02:35 PM By Felipe Pessoto

Publiquei no NuGet.org uma pequena biblioteca que uso há muito tempo para ajudar no uso de cache e evitar a mesma repetição de código sempre que se usa cache. Esta é a primeira versão pública.

O Package se chama Fujiy.Util e contém também algumas extensões para Collections.

Um exemplo de como essa biblioteca pode ajudar.

Em vez de escrever todo esse bloco de código:

decimal price;

var returnFromCache = Cache"CarClassGetPrice" + carId;

if(returnFromCache is decimal)

{

    price = (decimal)returnFromCache;

}

else

{

    price = GetPrice(carId);

    Cache["CarClassGetPrice" + carId] = price;

}

 

Você escreve apenas:

decimal price = CacheHelper.FromCacheOrExecute(() => myObj.GetPrice(carId));

 

O código fonte está disponível no CodePlex e conta com muitos testes unitários