Laden...
M
majk myCSharp.de - Member
Rhein/Main Gebiet Dabei seit 29.01.2010 3 Beiträge
Benutzerbeschreibung

Forenbeiträge von majk Ingesamt 3 Beiträge

22.06.2010 - 14:10 Uhr

Hallo Boris0815,

ja, ich würde Dir auch davon abraten Visibility eines UI Objekts direkt aus dem VM anzusprechen.

Entweder setzt Du die Lösung von winSharp93 um, oder Du stellst anstatt des Visibility ein bool Property bereit. Dieses bool Property ließe sich im XAML dann sowohl an ein .IsEnabled als auch über einen IValueConverter an .Visibility binden.

Viele Grüße,

29.01.2010 - 18:57 Uhr

Hallo zusammen,

vielleicht kann mir jemand einen entscheidenden Tipp bei meinem Designproblem geben. Die üblichen Beispiele im Web und Themen in diesem Board beziehen sich gerne auf ein überschaubares Datenvolumen. Irgendwie habe ich diese Woche ein Brett vor dem Kopf und komme bei meinem Problem zu keiner passablen Lösung.


(1) Problemstellung

Es sind x Threads gegeben, welche über jeweils über einen eigenen Socket als TCP Stream Daten empfangen. Die Datenmenge kann sehr umfangreich sein (z.B > 1 GB) und müssen vor einer Speicherung inhaltlich ausgewertet und nach einer Protokolllogik zusammengefasst werden. Letztendlich verbleiben zur Speicherung noch ca. 30-40% des Datenvolumen.

Wenn ich "nur" von einem Datenvolumen 1,5GB bei 10 Threads ausgehe, scheidet eine Verabreitung noch vollständigem Empfang aus 😉

Daher denke ich an eine assynchrone Verarbeitung. Jedem Thread wird ein Objekt zur Verfügung gestellt, welchem er jeweils nach einem socket.receive die empfangenen Rohdaten übergiebt. Im Objekt werden die Rohdaten "verarbeitet", sobald ihm eine verarbeitungswürdige Rohdatenmenge vorliegt (z.B. 1 MB). Die verarbeiteten Rohdaten werden dabei in eine List<t> (mit Unterlisten) eingepflegt, abgespeichert und geleert/nullt (um Arbeitsspeicher freizugeben). Die nicht verarbeitungsfähigen Rohdaten werden aufgehoben, um sie mit den weiterhin aus dem Thread empfangenen Rohdaten zusammenzuführen und im nächsten Verarbeitungsprozess zu verarbeiten.

  • Instanziere ich das Objekt im Thread wird der Download durch die Verarbeitung unterbrochen.
  • Lasse ich die Objekte zusätzlich als Thread laufen handle ich mir einige Engpässe wegen vieler Locks (und Konsorten) ein.
  • Schreibe ich die empfangenen Daten temporär auf die HDD, habe ich sehr kostspielige Lese- und Schreiboperationen.

(2) Hintergrund für interessierte

Es handelt sich um einen NNTP (Usenet) Reader, welcher über XOVER eine Vielzahl an Header empfängt. Die Header müssen ausgewertet werden und z.B. yenc bedingt zusammengefasst werden.

Danke vorab für einen Tipp/Schlagworte/Hinweise,
marc