Solicitar al usuario que guarde al cerrar la aplicación

Estoy escribiendo lo que se reduce a un editor de documentos. Cuando la aplicación se está cerrando, necesito pedirle al usuario que guarde los cambios. Esto es bastante fácil. Mi pregunta es cuándo es apropiadono solicite al usuario y, en su lugar, simplemente descarte los datos no guardados y ciérrelos.

En el evento FormClosing, la enumeración CloseReason incluye:

NingunaWindowsShutDownMdiFormCierreCierre de usuarioTaskManagerCierreFormOwnerCierreApplicationExitCall

Me imagino que WindowsShutDown y TaskManagerClosing no deberían causar un "¿guardar cambios?" solicitar que aparezca, para evitar que la aplicación se cuelgue con esa indicación que se muestra.

¿Es esta una práctica estándar, o debería estar haciendo algo más aquí?

Para mayor claridad, aquí está el código:

protected override void OnFormClosing(FormClosingEventArgs e)
{
    base.OnFormClosing(e);

    if (!(e.CloseReason == CloseReason.WindowsShutDown || e.CloseReason == CloseReason.TaskManagerClosing)
            && this.ChangesPending())
    {
        switch (MessageBox.Show(this, "Save changes?", "Save Changes", MessageBoxButtons.YesNoCancel))
        {
            case DialogResult.Yes:
                this.Save();
                break;
            case DialogResult.No:
                // Do nothing
                break;
            case DialogResult.Cancel:
                e.Cancel = true;
                break;
        }
    }
}

Respuestas a la pregunta(5)

Su respuesta a la pregunta