Explorando o BackGroundWorker para invocação de thread de ações da GUI nos controles do Winforms?

Inspirado em minha própria experiência com aplicativos WinForms com vários threads, além de perguntas como

Evitando os problemas de Invoke / BeginInvoke no tratamento de eventos WinForm com thread cruzado?Evite chamar Invoke quando o controle for descartado

Eu criei um padrão muito simples, cuja firmeza eu gostaria de verificar.

Basicamente, estou criando (e executando ao longo da vida útil do aplicativo) um BGW cujo único objetivo é a sincronização de solicitações de chamada. Considerar:

public MainForm()
{
    InitializeComponent();
    InitInvocationSyncWorker();
}

private void InitInvocationSyncWorker()
{
    InvocationSync_Worker.RunWorkerAsync();
}

private void InvocationSync_Worker_DoWork(object sender, DoWorkEventArgs e)
{
    Thread.Sleep(Timeout.Infinite);
}

void InvokeViaSyncWorker(Action guiAction)
{
    InvocationSync_Worker.ReportProgress(0, guiAction);
}

private void InvocationSync_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
    if (IsDisposed) return; //we're in the GUI thread now, so no race condition right?

    var action = (Action) e.UserState;
    action();
}

public void SomeMethodCalledFromAnyThread() //Sample usage
{
    InvokeViaSyncWorker(() => MyTextBox.Text = "Hello from another thread!"));    
}

É verdade que não é a abordagem mais econômica (manter um tópico vivo assim), mas se funcionar e eu não tiver perdido nada, com certeza é o mais simples que já vi.

O feedback é muito apreciado!

questionAnswers(1)

yourAnswerToTheQuestion