¿Es seguro reemplazar todos los controladores de eventos estándar por WeakEventManager o su varian?

Controlador de eventos estándar (con operador+ =) es uno depérdida de memoria causa (si no está no registrada / eliminada (con- = operador)).
Y Microsoft lo resolvió conWeakEventManager y su herencia como:PropertyChangedEventManager, CollectionChangedEventManager, CurrentChangedEventManager, errorsChangedEventManager y así.

El código de ejemplo simple con pérdida de memoria es:

public class EventCaller
{
    public static event EventHandler MyEvent;

    public static void Call()
    {
        var handler = MyEvent;
        if (handler != null)
        {
            handler(null, EventArgs.Empty);
            Debug.WriteLine("=============");
        }
    }
}

public class A
{
    string myText;

    public A(string text)
    {
        myText = text;
        EventCaller.MyEvent += OnCall;

        // Use code below and comment out code above to avoid memory leakage.
        // System.Windows.WeakEventManager<EventCaller, EventArgs>.AddHandler(null, "MyEvent", OnCall);  
    }

    void OnCall(object sender, EventArgs e)
    {
        Debug.WriteLine(myText);
    }

    ~A()
    {
        Debug.WriteLine(myText + " destructor");
    }
}

void Main()
{
    var a = new A("A");
    var b = new A("B");
    EventCaller.Call();
    a = null;
    GC.Collect();
    EventCaller.Call();
}

El resultado es:

A
B
+++++++
A
B
+++++++

Podemos ver que no se llamará al destructor. Pero si cambiamos (al comentar el código no utilizado) de:

    EventCaller.MyEvent += OnCall;

a

    System.Windows.WeakEventManager<EventCaller, EventArgs>.AddHandler(null, "MyEvent", OnCall);  

Y la salida es:

A
B
+++++++
B
+++++++
Un destructor
B destructor

Una vez que se anula a, su controlador de eventos ya no se llamará.
A y B se eliminarán después de que ya no se usen sin - = operador.

1. ¿Puedo reemplazar de forma segura a todos los operadores + = con System.Windows.WeakEventManager para evitar pérdidas de memoria debido a la falta de registro del evento y al guardar el código probablemente no debería implementar IDisposable?

2. Si no es realmente seguro, ¿qué debo considerar o notar?

Respuestas a la pregunta(2)

Su respuesta a la pregunta