Comment puis-je faire de la croix-thread appelle à une ToolStripStatusLabel?

J'ai tendance à utiliser un StatusStrip au fond de la plupart de mes applications pour de simples mises à jour de statut et de temps en temps une barre de progression.

Cependant, il semble ToolStripStatusLabels n'héritent pas de contrôle, de sorte qu'ils n'ont pas .Invoquer, ou .InvokeRequired. Alors, comment aurais-je thread-safe de faire un appel pour modifier le texte de la propriété?

Réponses codées pour la postérité et d'autres qui viennent de la recherche:

Action<string> test=(text) =>
            {
                if (this._statusStrip.InvokeRequired) this._statusStrip.Invoke(
               new MethodInvoker(() => this._lblStatus.Text = text));
                else this._lblStatus.Text = text;
            };

ou

private void TestInvoker(string text)
    {
        if (this._statusStrip.InvokeRequired) 
            this._statusStrip.Invoke(
                   new MethodInvoker(() => this._lblStatus.Text = text));
        else this._lblStatus.Text = text;
    }
Soyez prudent dans votre logique de Contrôle.Invoquer. Les règles énoncées dans les docs sont subtiles et sujette à l'erreur si ils ne sont pas les lire attentivement. Veuillez vérifier le code que j'ai dans le lien dans ma réponse pour plus de bien-gardée de l'utilisation de l'Invoquer. E. g., votre application n'est pas que la vérification de la ToolStrip n'est pas éliminé et il n'est pas de vérifier que le ToolStrip's de la poignée a été créé.
En plus de la poignée n'étant pas encore créé, Il ressemble à ces affaires ne rien faire en plus de lancer des exceptions si elles se produisent de toute façon, non? Et si la poignée n'est pas encore créé, je ne suis pas sûr que c'est utile de faire semblant de rien n'était et de ne pas lever une exception.

OriginalL'auteur Maslow | 2009-07-14