Heim > Backend-Entwicklung > C++ > Wie aktualisiere ich eine C#-TextBox sicher aus einem separaten Thread?

Wie aktualisiere ich eine C#-TextBox sicher aus einem separaten Thread?

Barbara Streisand
Freigeben: 2024-12-31 20:37:13
Original
384 Leute haben es durchsucht

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

Aktualisieren einer TextBox aus einem separaten Thread in C#

In Windows Forms-Anwendungen ist es wichtig, den Zugriff auf UI-Elemente aus Nicht-UI-Threads zu vermeiden . Wenn Sie versuchen, eine TextBox von einem separaten Thread aus zu bearbeiten, kann die Ausnahme „Diese Art von Vorgang ist in diesem Thread nicht gültig“ auftreten. Um dieses Problem zu beheben, müssen Sie die Thread-übergreifende Kommunikation ordnungsgemäß handhaben.

Um eine TextBox aus einem separaten Thread zu aktualisieren, sollten Sie in Ihrem Hauptformular eine Methode erstellen, die nach der InvokeRequired-Eigenschaft der Control-Klasse sucht. Wenn InvokeRequired „true“ ist, bedeutet dies, dass der Aufruf von einem Nicht-UI-Thread erfolgt und Sie die Invoke-Methode verwenden müssen, um den Aufruf an den UI-Thread zumarshallen.

Betrachten Sie beispielsweise den folgenden Codeausschnitt :

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);
        }
    }
}
Nach dem Login kopieren

In diesem Beispiel prüft die AppendTextBox-Methode das InvokeRequired-Flag und verwendet bei Bedarf Invoke zum Marshallen der Aufruf des UI-Threads. Innerhalb der SampleFunction-Methode kann die AppendTextBox-Methode sicher vom separaten Thread aufgerufen werden, ohne eine Ausnahme auszulösen. Mit diesem Ansatz können Sie UI-Elemente aus Nicht-UI-Threads aktualisieren und gleichzeitig die Thread-Sicherheit wahren.

Das obige ist der detaillierte Inhalt vonWie aktualisiere ich eine C#-TextBox sicher aus einem separaten Thread?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage