vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: [VB.NET] ListView von anderer Form aus mit Prozedur befüllen 
Autor: Preisser
Datum: 17.05.11 23:16

Hallo Manfred,

eine Anmerkung zu deinem Beispiel:

Dort wird der aufrufende Thread so lange angehalten, bis der GUI-Thread mit der Ausführung des Delegaten fertig ist (ist in dem Beispiel auch erforderlich, weil sonst die Referenzvariable auf den String überschrieben werden könnte, bevor der GUI-Thread die Methode ausgeführt hat).

Man kann jedoch die Methode auch asynchron aufrufen (BeginInvoke), sodass der aufrufende Thread nicht während der Zeit blockiert wird. Dazu kann man beispielsweise die Methodenparameter auch als ein ParamArray übergeben. Dann ist auch kein SyncLock mehr erforderlich, da die Referenz auf den String nicht überschrieben werden kann. Beispiel:
    Private Delegate Sub AppendTextDelegate(ByVal Textbox As TextBox, ByVal _
      Text As String)
    Private Sub AppendTextSimple(Textbox As TextBox, ByVal Text As String)
        ' Diese Funktion wird im GUI-Thread ausgeführt
        Textbox.AppendText(Text)
    End Sub
    Private Sub AppendTextThreadsafe(Textbox As TextBox, ByVal Text As String)
        ' Diese Funktion wird in einem anderen Thread ausgeführt, wobei
        ' nicht gewartet wird, bis der GUI-Thread die Funktion fertig 
        ' ausgeführt hat
        Textbox.BeginInvoke(New AppendTextDelegate(AddressOf AppendTextSimple), _
          Textbox, Text)
    End Sub
AppendTextThreadsafe() ist dann die Funktion, die aus dem anderen Thread heraus aufgerufen werden kann.

Beitrag wurde zuletzt am 17.05.11 um 23:39:40 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
[VB.NET] ListView von anderer Form aus mit Prozedur befüllen2.054Larsi-Blasi17.05.11 18:50
Re: [VB.NET] ListView von anderer Form aus mit Prozedur befü...1.420Manfred X17.05.11 19:50
Re: [VB.NET] ListView von anderer Form aus mit Prozedur befü...1.559Larsi-Blasi17.05.11 21:06
Re: [VB.NET] ListView von anderer Form aus mit Prozedur befü...1.466Manfred X17.05.11 21:22
Re: [VB.NET] ListView von anderer Form aus mit Prozedur befü...1.472Larsi-Blasi17.05.11 21:32
Re: [VB.NET] ListView von anderer Form aus mit Prozedur befü...1.487Manfred X17.05.11 21:35
Re: [VB.NET] ListView von anderer Form aus mit Prozedur befü...1.452Larsi-Blasi17.05.11 21:37
Re: [VB.NET] ListView von anderer Form aus mit Prozedur befü...1.402Manfred X17.05.11 21:43
Re: [VB.NET] ListView von anderer Form aus mit Prozedur befü...1.352Larsi-Blasi17.05.11 21:52
Re: [VB.NET] ListView von anderer Form aus mit Prozedur befü...1.548Larsi-Blasi17.05.11 21:58
Re: [VB.NET] ListView von anderer Form aus mit Prozedur befü...1.470Manfred X17.05.11 22:06
Re: [VB.NET] ListView von anderer Form aus mit Prozedur befü...1.862Preisser17.05.11 23:16
Re: [VB.NET] ListView von anderer Form aus mit Prozedur befü...1.742Manfred X18.05.11 08:02
Re: [VB.NET] ListView von anderer Form aus mit Prozedur befü...1.520Preisser18.05.11 12:22
Re: [VB.NET] ListView von anderer Form aus mit Prozedur befü...1.407Larsi-Blasi17.05.11 22:13

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel