Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte grafische und textliche Erläuterung der Thread-übergreifenden Zugriffskontrolle von C# WinForm

Detaillierte grafische und textliche Erläuterung der Thread-übergreifenden Zugriffskontrolle von C# WinForm

黄舟
黄舟Original
2017-09-16 11:09:533858Durchsuche

Das Problem tritt auf:

Wenn WinForm den Multithread-Zugriff auf die Steuerelemente des Hauptthreads verarbeitet, geschieht Folgendes erscheint: Fehlerdialog angezeigt:

Lösung:

Lösung 1: Entfernen Sie die Sicherheitsprüfung für den Thread-Zugriff auf Haupt-Thread-UI-Steuerelemente, verwenden Sie :

 Control.CheckForIllegalCrossThreadCalls = false;

Option 2: Verwenden Sie die Delegation, um den UI-Steuerungsvorgang des Hauptthreads in die Nachrichtenwarteschlange des Threads zu verschieben Methoden sind: Invoke-Methode und BeginInvoke-Methode. Die erstere ist eine synchrone Methode und die letztere ist eine asynchrone Methode. Der Programmcode, der die synchrone Invoke-Methode verwendet, ist wie folgt und hat den Test bestanden: 🎜>

Hinweis: Der Prozess der Verwendung der asynchronen BeginInvoke-Methode ist der gleiche wie der der synchronen Invoke-Methode. Ersetzen Sie einfach die Invoke-Methode durch die BeginInvoke-Methode Synchronisationskontext: SynchronizationContext-Methode: Diese Methode dient dazu, die Kontextinformationen des Hauptthreads abzurufen und dann die Zugriffs-UI-Steuerungsmethode mithilfe von POST oder Send in die Nachrichtenwarteschlange des UI-Kontexts im untergeordneten Thread zu verschieben Option 4: Es gibt eine

BackgroundWorker-Klasse im

-Namespace:

System.ComponentModel. Sie wird in einem separaten Thread ausgeführt. Die folgende Abbildung wurde aus der offiziellen Website-Beschreibung kopiert:

Frageerweiterung:

Warum ein TextBox-Steuerelement in WinForm hinzufügen und dann über einen anderen Thread auf das Steuerelement des UI-Hauptthreads zugreifen, ohne einen Fehler zu melden und normal weiterzuleiten? ? ? Bitte geben Sie mir einen Rat von den Experten! ! ! Das Bild sieht wie folgt aus:

Das obige ist der detaillierte Inhalt vonDetaillierte grafische und textliche Erläuterung der Thread-übergreifenden Zugriffskontrolle von C# WinForm. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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