Solicitar que o usuário salve ao fechar o aplicativo

Estou escrevendo o que se resume a um editor de documentos. Quando o aplicativo está sendo fechado, preciso solicitar ao usuário que salve as alterações. Isso é fácil o suficiente. Minha pergunta é quando é apropriadonão solicitar ao usuário e simplesmente descartar dados não salvos e fechar.

No evento FormClosing, a enumeração CloseReason inclui:

NenhumWindowsShutDownMdiFormClosingUserClosingTaskManagerClosingFormOwnerClosingApplicationExitCall

Eu acho que WindowsShutDown e TaskManagerClosing não devem causar um "salvar alterações?" prompt para aparecer, para impedir que o aplicativo seja interrompido com a exibição desse prompt.

Esta é uma prática padrão ou devo fazer outra coisa aqui?

Para maior clareza, aqui está o 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;
        }
    }
}

questionAnswers(5)

yourAnswerToTheQuestion