Autor Beitrag
manuh
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 17.02.10 10:13 
Hallo, ich habe ein Programm entwickelt was auf eine Webseite zugreift und den Quellcode nach bestimmten Tags durchsucht, allerdings "hängt" sich das Programm auf während es die Webseite ausliest.
Erst nachdem der Vorgang beendet ist, reagiert es wieder. Ich denke ich muss das mittels Threads machen oder? Wenn ja, kennt jemand ein gutes Tutorial? Wenn nein, was kann ich anwenden damit ich dennoch das Programm weiter bedienen kann, solange er die Seiten ausliest?

Gruß
Manuh
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 17.02.10 10:47 
Hallo und :welcome:

Ich schlage einen BackgroundWorker vor: Der vereinfacht das Arbeiten mit einem Thread. In der SDK-Doku/MSDN/Hilfe ist ein brauchbares Beispiel zu lesen.

Gruß Jürgen

Nachtrag zu Daniel: Applications.DoEvents kann helfen, ist aber kritisch zu bewerten wegen Nebenwirkungen. Ich vermeide deshalb einen solchen Ratschlag (und benutze es seit längerem selbst nicht mehr).


Zuletzt bearbeitet von JüTho am Mi 17.02.10 10:56, insgesamt 1-mal bearbeitet
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mi 17.02.10 10:50 
Hallo und :welcome:,

das Stichwort hast du schon gesagt: Threads. Das Problem ist, das dein Programm mit dem verarbeiten beschäftigt ist und deshalb die GUI "blockiert". Du könntest auch exklusiv sagen Applications.DoEvents um die Anzeige wieder zu aktuallisieren (zwischen den einzelnen Schritten). Aber ich denke Threads sind viel besser geeignet. Doku findest du bestimmt im Openbook C#.

Ziemlich unkompliziert ist auch der BackgroundWorker. Dieser erlaubt dir auch aus dem Thread heraus auf die Gui zuzugreifen (zum Beispiel um den Fortschritt anzuzeigen).

Gruß Daniel
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 17.02.10 19:39 
Ich nehme an, dass nur die Zeit zum Download der Datei bemerkbar ist (DoEvents hier also überhaupt nichts bringen würde). Dann gibt es eine noch einfachere Lösung: Mit WebClient.DownloadStringAsync muss man sich überhaupt nicht um Threads kümmern.

_________________
>λ=