/ Published in: C#
                    
                                        
                            
                                Expand |
                                Embed | Plain Text
                            
                        
                        Copy this code and paste it in your HTML
public class SingletonClassName
{
#region EventArg Declarations
public class SingletonClassNameEventArgs : EventArgs
{
#region Properties
public PropertyDataType PropertyName { get; set; }
#endregion
#region Constructors
public SingletonClassNameEventArgs(PropertyDataType _PropertyName)
{
this.PropertyName = _PropertyName;
}
#endregion
}
#endregion
#region Variable Declarations
private static object _threadSynchronizationHandle = null;
#endregion
#region Constructors
//Note that we are making the constructor private. Doing so ensures that the class cannot
//be directly instantiated which is one of the principles of the Singleton pattern.
private SingletonClassName()
{
}
#endregion
#region Singleton Access Point
public static SingletonClassName Instance
{
get
{
lock (GetThreadSynchronizationHandle())
{
return _instance;
}
}
}
#endregion
#region Thread Synchronization Handles
private static object GetThreadSynchronizationHandle()
{
//When the thread synchronization handle object is requested, we use the CompareExchange
//method of the Interlocked class to see if the value is null. If it is null, then we
//will create the new object. If it is not null then we will return the previously
//allocated lock target.
return _threadSynchronizationHandle;
}
#endregion
#region Public Event Handlers
public event EventHandler<SingletonClassNameEventArgs> OnRaiseEventNameEvent;
#endregion
#region Public Raise Event Handlers
public void RaiseEventNameEvent(SingletonClassNameEventArgs e)
{
//Note that we are making a temporary copy of the event to avoid the possibility of a race
//condition if the last subscriber of the event unsubscribes immediately after
//the null check and before the actual event is raised.
EventHandler<SingletonClassNameEventArgs> eventHandler = OnRaiseEventNameEvent;
//We will only raise the event if there are subscribers to the event.
if (eventHandler != null)
{
eventHandler(this, e);
}
}
#endregion
#region Public Methods
#endregion
#region Private Methods
#endregion
}
Comments
 Subscribe to comments
                    Subscribe to comments
                
                