Consider using a Lazy<T> class or more appropriately a ResetableLazy<T> to synchornize requests.

Developer
Apr 20, 2014 at 1:24 AM
Not that we have to really worry about performance, but I think you could have much cleaner code if you used a model that exposed ResetableLazy<T> versions of the properties.
Here's an example of a resetable (and thread safe) lazy class:
http://stackoverflow.com/questions/5961252/reset-system-lazy.