FileSystemWatcher: ¿solo el evento de cambio una vez que se dispara una vez?

Estoy usando el siguiente código para escuchar los eventos de cambio de un archivo que descargo de un servidor y que abro. sin embargo, el evento de cambio solo se dispara la primera vez que se guarda el archivo, luego, en los guardados subsiguientes, el observador de archivos no dispara los eventos de cambio?

¿Alguien puede ver qué está pasando?

private FileSystemWatcher StartWatchingFile()
{
    fw = new FileSystemWatcher();
    fw.Path = this.directoryLocation;
    fw.Filter = this.Filename;

    fw.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite;

    // Add event handler
    fw.Changed += new FileSystemEventHandler(fw_Changed);

    // Open file        
System.Diagnostics.Process.Start(this.CreateAbsoluteFilePath(this.Filename));

    // Begin watching.
    fw.EnableRaisingEvents = true;

    return fw;
}

//************************  

    void fw_Changed(object sender, FileSystemEventArgs e)
    {
        MessageBox.Show("File: " + e.FullPath + " " + e.ChangeType);
    }

EDITAR: El StartWatchingFile () ahora devuelve el observador de archivos que se guarda en una clase que no se recolectará en la basura, solo para asegurarse de que estoy manteniendo a toda la clase como se pensaba que la función fw_changed () no podría ser llamada. Así que toda la clase ahora no está recogiendo basura. La clase se lleva a cabo en un ArrayList que es un miembro público de una clase

Saludos,

Jon

Respuestas a la pregunta(2)

Su respuesta a la pregunta