Filme per Thread laden

Aufgabeninfo

Projekt: 

Typ: 

Feature-Wunsch

Zielversion: 

Status: 

Geschlossen

Lösung: 

Erledigt

Erledigt in Version: 

Die Filme auf der FilmSammlung sollte per Thread geladen werden. Soll in der Zwischenzeit noch ein Film geladen werden so muss dieser auch noch geladen werden (bis max 60ms). Anschließend muss ein Event ausgelöst werden damit die ListView neu gezeichnet wird. Damit sollte sich das Scrollen flüssiger anfühlen. Wobei es natürlich sein könnte, dass dann zu viele Filme in die Queue gelangen und so zu viel arbeit anfällt. Eventuell lässt sich das auch paralelisieren.

Kommentare

Eventuell sollten die Filme

Eventuell sollten die Filme auch nicht einfach so erscheinen sondern müssen eingeblendet werden. Damit es nicht so ruckartig wirkt sondern sanft und flüssiger. Natürlich dürfen 3-4 Filme die an einem Stück geladen wurden auch gleichzeitig eingeblendet werden.

(Kein Betreff)

Aufgabeninfo

Status: 

Zugewiesen

MovieList muss beim Zeichnen

  1. MovieList muss beim Zeichnen neue Filme in eine interne Liste setzen. Damit alle zu ladenden Filme bekannt sind. Außerdem müssen diese an den ThreadPool zum Laden übergeben. Wenn bereits vorhanden, dann natürlich noch n
  2. MovieList muss beim Scrollen (Neuzeichnen) überprüfen, ob Filme nicht mehr sichtbar sind. Wenn nicht, müssen sie aus der LadeQueue entfernt werden und auch beim ThreadPool entfernt werden.
  3. Der Threadpool zum Laden der Filme muss die angeforderten Filme laden und anschließend eine Event auslösen, dass der Film zur Abholung bereit steht.
  4. MovieList muss beim Event des ThreadPools die Filme aus der internen Queue löschen und anschließend ein neuzeichnen anwerfen.

(Kein Betreff)

Aufgabeninfo

Zielversion: 

Scheint zu funktionieren

Aufgabeninfo

Status: 

Erledigt

Lösung: 

Erledigt

Erledigt in Version: 

Scheint zu funktionieren

Die Detailansicht nach dem

Aufgabeninfo

Status: 

Zugewiesen

Die Detailansicht nach dem Laden der Datenbank ist das letzte Item in der Liste und nicht das Erste. Das passiert, weil die Filme durcheinander geladen werden. In der Funktion MainForm.movieList_GetMovie. Das sollte natürlich wieder der erste Film in der Liste sein. Eventuell muss der Film beim Aktualisieren der Liste gesetzt werden.

Funktioniert auch wieder

Funktioniert auch wieder recht sinnvoll.

Die Liste der anzuzeigenden

Die Liste der anzuzeigenden Filme sollte auch in einem Thread geladen werden. Oder zu mindest mal schauen, ob das so ohne weiteres funktioniert. Diese Query dauert in der Regel auch noch 0,2 Sekunden.

Erledigt

Erledigt

Kein Faden bei Klick auf Wunschliste

Ein Klick auf die CheckBox für die Wunschliste sollte nicht in einem Faden enden. Das resultiert aus dem Speichern und ungültig machen des Filmes im Cache und dem anschließenden Neuzeichnen der Liste. Während des Zeichnens wird festgestellt, dass sich der Eintrag ja gar nicht mehr im Cache befindet und wird asynchron geladen. Und als Folge dessen wird der Eintrag eingeblendet.

Hier sollte es wohl vollkommen ausreichen, wenn nach dem Schreiben des Filmes dieser noch mal explizit geladen wird. Die Alternative würde bedeuten, dass dort doppelte Threads benötigt würden. Was sicher nicht schneller wäre.

Erledigt

Erledigt

Die Detailansicht der Filme

Die Detailansicht der Filme sollte auch asynchron geladen werden. Das passiert aktuell auch noch synchron. Bedeutet wieder mehr blockieren.

Scheint ganz gut zu

Scheint ganz gut zu funktionieren.

Einblenden der Filme sehr langsam

Das Einblenden der Filme dauert auf XP (schlechte grafik?) ewig. Eventuell liegt es auch am DoubleBuffering, dass er pro Film immer die komplette Liste zeichnen muss. Das kann man beim Zeichnen auch halbwegs gut erkennen. Eventuell reicht es aus nach dem setzen der FadeStates ein Mal die komplette Liste zu zeichnen. Dann müssten alle Filme nur ein Mal gezeichnet werden.

Jetzt sollte sich die Anzahl

Jetzt sollte sich die Anzahl der Zeichenvorgänge etwas reduziert haben.

(Kein Betreff)

Aufgabeninfo

Status: 

Erledigt

Lösung: 

Erledigt

Statusänderung

Aufgabeninfo

Status: 

Geschlossen

Die Aufgabe wurde aufgrund von Inaktivität automatisch geschlossen.