Can someone explain the main benefits of different types of references in C#?
MSDN has a good explanation of weak references. The key quote is at the bottom where it says:
Avoid using weak references as an automatic solution to memory management problems. Instead, develop an effective caching policy for handling your application's objects.
Every time I've seen a WeakReference in the wild, it's been used as an automatic solution to memory management problems. There are likely better solutions to your application's problems.