vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 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 - Fortgeschrittene
Re: Zugriff aus Thread auf Steuerelement ohne ständiges Invoke 
Autor: lyris
Datum: 11.04.10 22:49

Hallo allerseits, und vielen Dank an RalfE für die vielen Tipps.

Ich habe jetzt eine relativ praktikable Lösung gefunden:

1. Ich definiere Global einen CopyFileThread, den ich nicht dauernd neu erzeuge,
sondern, wenn keine Arbeit zu tun ist via Thread.Sleep(System.Threading.Timeout.Infinite)
in den Ruhezustand versetze.
Finde ich neue Files, dann nutze ich Thread.Interrupt um ihn wieder aufzuwecken und
mit einer SharedVariable tausche ich die Info aus, ob der Thread noch arbeitet oder schläft.
==> Reduziert die unnötig hohe Anzahl von Threads.

2. In der Gui habe ich ein Event, daß der CopyThread auslöst, wenn er was sagen will.
Daraufhin nutze ich BeginInvoke um die Ausgabe in die Listbox zu machen.
Um Reihenfolgetreu zu bleiben nutze ich ein SyncLock Objekt.
==> Im Noftall muss eben ein Thread kurz warten um seine Ausgabe zu machen

3. Die Lösung hat einen kleinen Haken: Ich kann am Ende der Analyse in der Gui nicht mit
CopyThread.Join auf sein Ende warten (weil dabei keine Ausgaben mehr in die Listbox möglich sind,
da dann die GUI stillsteht) sondern muss leider ein Loop mit Thread.Sleep(x) verwenden, solange
der CopyThread noch arbeitet.
==> Ich könnte die Analyse selbst in einen eigenen Thread verschieben

Diese Implementierung dauert zeitlich betrachtet bei 500 zu kopierenden Dateien nur ca. 1 sec. länger als die Variante ohne Ausgabe in die Listbox.
Daß Invoking kostet also gar nicht soviel Zeit - es ist eher eine verschobene Wahrnehmung wenn man im DebugLog einen Eintrag sieht, die Platte rattern hört und in der ListBox steht der Eintrag noch nicht drin.

Vielen Dank nochmal für das Feedback.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Zugriff aus Thread auf Steuerelement ohne ständiges Invoke3.626lyris11.04.10 00:02
Re: Zugriff aus Thread auf Steuerelement ohne ständiges Invo...2.351ModeratorRalfE11.04.10 00:34
Re: Zugriff aus Thread auf Steuerelement ohne ständiges Invo...2.350lyris11.04.10 01:18
Re: Zugriff aus Thread auf Steuerelement ohne ständiges Invo...2.347ModeratorRalfE11.04.10 08:35
Re: Zugriff aus Thread auf Steuerelement ohne ständiges Invo...2.318lyris11.04.10 12:11
Re: Zugriff aus Thread auf Steuerelement ohne ständiges Invo...2.375ModeratorRalfE11.04.10 16:35
Re: Zugriff aus Thread auf Steuerelement ohne ständiges Invo...2.526lyris11.04.10 22:49
Re: Zugriff aus Thread auf Steuerelement ohne ständiges Invo...2.261ModeratorRalfE11.04.10 23:10
Re: Zugriff aus Thread auf Steuerelement ohne ständiges Invo...2.247Nico1983HH14.04.10 07:50
Re: Zugriff aus Thread auf Steuerelement ohne ständiges Invo...2.279chrixko14.04.10 09:51
Re: Zugriff aus Thread auf Steuerelement ohne ständiges Invo...2.272lyris17.04.10 01:21
Re: Zugriff aus Thread auf Steuerelement ohne ständiges Invo...2.272ModeratorRalfE17.04.10 09:06

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