KY.CacheUtil (nuget): This class helps you make cached method calls, and ensures the delegate is called only once in multithreaded environments.  Useful for loading resources from external urls, making web service calls, running expensive calculations, etc.  Sample usage: var result = cm.CachedCall("my_key", 30, delegate() {     return ExpensiveAndTimeConsumingMethodWithParams(...); });  or   var result = cm.CachedCall("my_key", 30, ExpensiveAndTimeConsumingMethod);
Keywords: cache|delegate|web|service|rest|api|httprequest