| |
|
|
| aHttpDw: Asynchrones* Senden y Laden por HTTP
*(en el Ggs. para synchonen Laden sin, dass el XProfan-Programa wartet, a el Operation final es)
Beim Weiterentwickeln vom Gonzo-Chat [...] war me rápidamente klar, dass trotz Optimierung des prozesssynchonen HTTP-Datenbeziehens (z.B. encima einfaches [...] ), mich störende Auszeiten el UI no verhindert voluntad puede.
Ein (en el Bezug para XProfan-Hilo welcher el Oberfläche y Interaktionen darstellt) asynchrones Beziehen el Daten musste her. Der XProfan ha hier en el Principio folgende Möglichkeiten, como XProfan de Haus de no ermöglicht, encima weitere Hilos innerhalb des selben Prozesses weitere XProfanablaufstränge abzuarbeiten:
A) Zweiprozess-Variante: Ein Prozess stellt el UI bereit y una zweiter Prozess el synchone Datenkommunikation. Beide Prozesse kommunizieren asynchron miteinander (z.B. encima esta Pipes: [...] )
B) Einprozess-Mehrthread-Variante: Der XProfanprozess se ejecuta como gehabt y läd una DLL (kann auch por Inline-ASM producido voluntad) y el DLL producido selbständig verwaltend Nebenthreads. DLL muss una Schnittstelle para el XProfan-Prozess bieten, Daten asynchron a beziehen y a senden.
Variante A ha gegenüber Variante B el Nachteil, dass esta Speicher- y Performance-lastiger es, aber el Vorteil, dass esta deutlich einfacher programmiert voluntad kann.
Variante B benötigt no eigenen/más Prozess pero sólo Hilos. Diese Variante Yo gestern para/wegen Gonzo programmiert, el aHttpDw.Inc war geschaffen.
El aHttpDw.Inc beinhaltet el aHttpDw.DLL welche específicamente para el aHttpDw.Inc programmiert es, una Betreiben el aHttpDw.Dll sin la Incluir es no posible como Incluya el Métodos para el DLL bereitstellt.
Tatsächlich kann con el Incluir pero no sólo heruntergeladen voluntad, sin el dass XProfanprogramm "stoppt", pero lo puede "zeitgleich" cualquier viele Downloads en Auftrag gegeben voluntad, welche todos "zeitgleich" abgearbeitet voluntad. Wenn uno así voluntad, entonces podría uno lo como "Downloadmanager" verkennen.
El Incluir stellt en el Grunde Zwei wichtige Möglichkeiten bereit:
aHttpDw(cadena url)
Legt en el Abarbeitungsstapel el URL url y beginnt inmediatamente el Daten a invitar. Zurückgegeben se el Nummer des nächst-freien SLOT (Handle) welcher später benutzt se, si la Daten vollständig empfangen fueron. Lo puede hierüber cualquier viele Sende/Lade-Aufträge abgesetzt voluntad.
y
aHttpDw.frame()
Wenn una Expediente vollständig heruntergeladen wurde, o. el Antwort des Server vollständig empfangen wurde, entonces son aHttpDw.frame el SLOT zurück, de otra manera null. Über el Slotnummer kommt una continuación simplemente a el Antwort. (Binary-Safe)
Mit aHttpDw(url) vergibt uno also el Auftrag, y encima aHttpDw.frame() puede ser asynchron/unregelmässig nachschauen, si tal vez ya una Expediente vollständig geladen wurde.
El Daten posición also entonces disponible, si uno danach fragt (asynchron) y el Downloads beeinflussen el Hauptthread des XProfan no.
Yo voluntad aber primero a Incluir (auch hier) unos pocos Testprogramme puesto. Eines su se eben auch Gonzo ser. |
|
|
| |
|
|