Journals from my internship at UIUC
Matching: c# X
It was my understanding that .Net has a garbage collector that initiates clearing up memory at optimum time the garbage collection thinks is appropriate to start the clearing up. I am aware that this functionality of .NET comes in handy in memory management. However, due to security reasons there might be a time when you want the garbage collector to close connections, null up objects etc and you might have to manually do it. I have been having this bug that I couldn't close my console procedure in Main() for this reason. Main procedure thinks it's still in the connection via the opened channel but the program has completed its task long time ago. As I indicated above, I implemented a simple method that disposes all opened connections, channels, subscriptions etc. I then called this method at the end of the program for a safe exit. This simple method saves your program from breaking.
A design pattern is a description of a set of interacting classes that provide a
framework for a solution to a generalized problem in a specific context or environment.
A pattern suggests a solution to a particular problem or issue in object-oriented software development. 
Modules designed without extensibility in mind are prone to being broken if tried to add
features and components.
Sooner or later, closed, inflexible designs break under the weight of changes.
Design patterns assist in laying the foundation for a flexible architecture,
which is the hallmark of every good object-oriented design.
Design patterns make the design process cleaner and more efficient
They allow you to build software faster
POPULAR DESIGN PATTERNS:
Improve the extensibility of your applications and the reuse of your objects.
the composite, and
the state classes