ProgressBar im 2. Thread anzeigen.

04/06/2008 - 15:15 von Andreas Waning | Report spam
Hallo


Ich habe eine C# Winform App in der ich folgendes machen möchte:

Im Hauptthread schicke ich ein Datenpaket zu einem Partner.


Send()
WaitForAnswer(); // In WaitForAnswer können 1-3 Sekunden vergehen.


Wàhrend der Zeit, in der gewartet wird, möchte ich gerne ein ProgressBar mit
dem Style Marquee anzeigen.
(vereinfacht)

ProgressBarShow();
Send();
WaitForAnswer();
ProgressBarClose();


Ich habe das jetzt mit einem 2 Thread gelöst. (Schon ein wenig aufwendig
!!!)

Hat jemand einen einfachen Lösungsansatz ?

Oder vielleicht ein Beispiel ?


Danke
Andreas
 

Lesen sie die antworten

#1 Thomas Scheidegger
04/06/2008 - 16:15 | Warnen spam
Hallo Andreas


ProgressBarShow();
Ich habe das jetzt mit einem 2 Thread gelöst




alles rund um das GUI gehört generell besser in den
(einzigen, expliziten) Main-(GUI/STA) Thread.
Ein multithreaded-GUI ist 'heikel' und meist eh unnötig...
(oder deutet IMHO hàufig auf unverstandene Windows-Konzepte)


ProgressBar



Siehe dir ggf auch Prinzip & Bsp von (.NET 2.0)
BackgroundWorker.ReportProgress Method
BackgroundWorker.ProgressChanged Event
an.
Manchmal kann àhnliches auch ein periodischer Forms-Timer erledigen.



Send();
WaitForAnswer(); // ...können 1-3 Sekunden vergehen




viele Kommunikations-Kanàle (zB Sockets)
bieten heute asynchrone-IO,
da stellen sich solche Fragen eigentlich gar nicht mehr,
und (zusàtzliche) Threads braucht es da auch nicht,
macht .NET selber (Thread Pool usw).

Optimale Lösung hàngt halt von jeweiligen Details ab,
eine generelle, 'beste' Lösung gibt es da kaum.





Thomas Scheidegger - 'NETMaster'
http://www.cetus-links.org/oo_dotnet.html - http://dnetmaster.net/

Ähnliche fragen