The problem with most modern software development is its greatest productivity point: “Easy of development”. This is especially true in the .NET/Microsoft space where the tools and Frameworks are simply amazing and hide most of the complexity.
Fortunately though for those of us who need to create more custom/complex solutions or simply want to fully understand their environment there are many ways to learn and interact with concepts such as Multi-threading and Memory Management (The Garbage Collector in .NET).
The following links are some of the best resources I have found to learn from or fresh your memory on these subjects. If you never visited them before I highly recommend adding these to your bookmarks and required reading lists.
Multi-threading
Multi-threading in .NET (by Jon)
http://www.yoda.arachsys.com/csharp/threads/
Memory Management
Garbage Collection: Automatic Memory Management in the Microsoft .NET Framework Jeffrey Richter
http://msdn.microsoft.com/msdnmag/issues/1100/GCI/default.aspx
Garbage Collection—Part 2: Automatic Memory Management in the Microsoft .NET Framework
http://msdn.microsoft.com/msdnmag/issues/1200/GCI2/default.aspx

