text fuer mehrere controls aus anderem thread setzen bzw. auf mehrere threads zugreifen

08/10/2009 - 13:11 von Ken Snyder | Report spam
hallo ng!

folgendes szenario: ich habe eine form und auf dieser form sind
mehrere controls. eine textbox, ein progressbar, einige labels.
ich lade mit einem webclient "asynchron" eine datei aus dem netz
herunter. dabei kalkuliere ich die verbleibende zeit im
DownloadProgressChanged und setzte alle werte auf den unterschiedlichen
controls innerhalb der DownloadProgressChanged, hauptsàchlich text und
zahlenwerte. da ich immer diese meldung mit dem cross thread calls
bekommen habe, habe ich die Control.CheckForIllegalCrossThreadCalls auf
"false" gestellt. Nun aber hàngt sich die form voellig unberechenbar bei
unterschiedlichen stellen auf. ich habe alle controlzugriffe aus dem
DownloadProgressChanged herausgenommen und nun gehts ohne haenger. das
problem ist damit klar.

nun wuerde ich gerne wissen, wie ich problemlos mehere werte
"gleichzeitig" auf unterschiedlichen controls setzten kann. mir ist das
mit den delagates und invoke klar, aber wie kann ich gleich 4-5 controls
threadsafe mit werten und ausgabe versehen?

basis ist das dot net 2, kein 3 oder 3.5.

danke schon mal.

lg

ken
 

Lesen sie die antworten

#1 FrankDzaebel
08/10/2009 - 13:41 | Warnen spam
Hallo Ken,

da ich immer diese meldung mit dem cross thread calls
bekommen habe, habe ich die
Control.CheckForIllegalCrossThreadCalls auf
"false" gestellt.



:-) das ist nicht die richtige Vorgehensweise,
denn die Ursache behebst Du damit nicht.

Hier kannst Du mögliche Techniken dafür erfahren:

[Bearbeiten von Steuerelementen aus Threads]
http://dzaebel.net/ControlInvoke.htm

für die umgekehrte Richtung über FTP habe ich
hier mal ein Beispiel:

[FTP Upload mit Byte-Anzeige]
http://dzaebel.net/FtpUpload.htm


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen