You need to provide access to one and only one instance of a specific resource.
Create a class that can only be initialized internally (to the class) and expose a static member to access the single instance of the class.
The singleton pattern is perhaps the simplest of all design patterns, which makes it a perfect starting point for those wrapping their heads around patterns. As a matter of fact, chances are you've already implemented the pattern without even realizing it. In my mind, there are two versions of the singleton pattern; I'll refer to them as startup-initialized and first access singletons. You can probably imagine how these might work: the startup-initialized singleton initializes the singleton either in a static constructor or via the field declaration, while the first access singleton uses a property or method to initialize the field the first time its accessor is called.
internal sealed class StartupInitializedSingleton
public static readonly StartupInitializedSingleton Instance = new StartupInitializedSingleton();
First Access Singleton
internal sealed class FirstAccessSingleton
private static FirstAccessSingleton _instance;
public static FirstAccessSingleton Instance
if (_instance == null)
_instance = new FirstAccessSingleton();