Often I find myself writing code like this:
if (Session != null)
{
Session.KillAllProcesses();
Session.AllUnitsReady
I found performing simple task like Globalizing the events which are most commonly used into its own class and inheriting their interfaces helps provide a developer a chance to use methods such as event properties for adding and removing events. Within your class whether encapsulation occurs or not clean up can begin by using something similar to the below example.
E.g.
#region Control Event Clean up
private event NotifyCollectionChangedEventHandler CollectionChangedFiles
{
add { FC.CollectionChanged += value; }
remove { FC.CollectionChanged -= value; }
}
#endregion Control Event Clean up
This is an article that provides addition feedback to other uses for Property ADD REMOVE: http://msdn.microsoft.com/en-us/library/8843a9ch.aspx