Maison > développement back-end > C++ > Comment mettre à jour en toute sécurité une TextBox C# à partir d'un thread séparé ?

Comment mettre à jour en toute sécurité une TextBox C# à partir d'un thread séparé ?

Barbara Streisand
Libérer: 2024-12-31 20:37:13
original
375 Les gens l'ont consulté

How to Safely Update a C# TextBox from a Separate Thread?

Mise à jour d'une zone de texte à partir d'un fil de discussion séparé en C#

Dans les applications Windows Forms, il est crucial d'éviter d'accéder aux éléments d'interface utilisateur à partir de fils de discussion non-UI . Lorsque vous tentez de manipuler un TextBox à partir d’un thread distinct, vous pouvez rencontrer l’exception « Ce type d’opération n’est pas valide sur ce thread ». Pour résoudre ce problème, vous devez gérer correctement la communication entre threads.

Pour mettre à jour une TextBox à partir d'un thread distinct, vous devez créer une méthode sur votre formulaire principal qui vérifie la propriété InvokeRequired de la classe Control. Si InvokeRequired est vrai, cela signifie que l'appel est effectué à partir d'un thread non-UI et que vous devez utiliser la méthode Invoke pour rassembler l'appel vers le thread UI.

Par exemple, considérez l'extrait de code suivant :

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        new Thread(SampleFunction).Start();
    }

    public void AppendTextBox(string value)
    {
        if (InvokeRequired)
        {
            this.Invoke(new Action<string>(AppendTextBox), new object[] { value });
            return;
        }
        ActiveForm.Text += value;
    }

    void SampleFunction()
    {
        // Gets executed on a separate thread
        for (int i = 0; i < 5; i++)
        {
            AppendTextBox("hi. ");
            Thread.Sleep(1000);
        }
    }
}
Copier après la connexion

Dans cet exemple, la méthode AppendTextBox vérifie l'indicateur InvokeRequired et, si nécessaire, utilise Invoke pour rassembler le appel au fil de discussion de l'interface utilisateur. Dans la méthode SampleFunction, la méthode AppendTextBox peut être appelée en toute sécurité à partir du thread séparé sans provoquer d'exception. Cette approche vous permet de mettre à jour les éléments de l'interface utilisateur à partir de threads non-UI tout en préservant la sécurité des threads.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal