I have an object cache which implements the Singleton design pattern. My approach to singleton was always to lazy load the static instance when the property is first accessed. <
Rather than rolling your own threadsafe lazy initializer and possibly getting it wrong, I recommend reading the msdn on Lazy.
Lazy
https://docs.microsoft.com/en-us/dotnet/framework/performance/lazy-initialization#thread-safe-initialization