[erledigt] Warum wird der LV-Aufbau verzögert ?

Anfängerfragen zum Programmieren mit PureBasic.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

yo. ein verändern eines gadgets erzeugt ein event, das abgearbeitet werden muss.
das fenster kann erst in der ereignisschleife aktualisiert werden.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

ts-soft hat geschrieben:@a14xerus
jemanden, der offentsichtlich die Bedeutung der Ereignisbeabeitung noch nicht verstanden hat, kann man nicht zu threads raten.
Stimmt, da habe ich garnicht dran gedacht.
Ich dachte nur, das es aber auch schlecht wäre, wenn man sich aneignet, windowevents "wegzuschmeissen" um das fenster richtig upzudaten
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Ich dachte nur, das es aber auch schlecht wäre, wenn man sich aneignet, windowevents "wegzuschmeissen" um das fenster richtig upzudaten

stattgegeben.

@ts
warum rätst du eigentlich immernoch zu dieser kontraduktiven event-wegwerf-schleife?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> windowevents "wegzuschmeissen"
In dieser Phase ist das egal, es gibt ja noch keine Benutzeraktionen, da
Fenster nicht fertig.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

joah....

wobei ich mich grad frag...
das gosub steht direkt vor der ereignisschleife...
was also könnte anderes dort lang dauern als der netzzugriff?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

ts-soft hat geschrieben:jemanden, der offentsichtlich die Bedeutung der Ereignisbeabeitung noch nicht verstanden hat, kann man nicht zu threads raten.
Wüdest Du dann bitte so freundlich sein und mit einem Code helfen, der das tut, was ich will, also nach jedem Downloadversuch eine Zeile ins LV schreiben?
Oder genauer erklären, WARUM es nicht so tut, wie ich vermute, das es sollte.
Das würde mehr helfen, als wenn ich jetzt stundenlang einsam vor mich hingrübel, wo mein Verständnisproblem liegt.
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> also nach jedem Downloadversuch eine Zeile ins LV schreiben
ins LV schreiben bedeutet u.a. Neuzeichnen, #wm_paint. Die geschieht nur
innerhalb einer Event-Loop-Schleife, bzw. durch WindowEvent()
Hinter jedem Download ein: While WindowEvent() : Wend sollte helfen.
Oder den gosub in der Ereignisschleife zeitgesteuert aufrufen, also mit:
WaitWindowEvent(200)
If noch download
gosub download
EndIf
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

mein lieber Scholly...

ich seh hier nur einen einzigen downloadversuch in dem code...

aber wenn es mehrere sind, dann ist es doch klar:
nach jedem downloadversuch muss ein event abgearbeitet werden,
also, muss ein WindowEvent()-Befehl stehen.

wenn du deine downloadversuche innerhalb der eventschleife startest,
dann werden sie auch sofort angezeigt.
(solange du genau EIN gadget-change-event pro schleifendurchlauf erzeugst)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> also, muss ein WindowEvent()-Befehl stehen.
falsch, es werden viele Ereignisse erzeugt.

Code: Alles auswählen

While WindowEvent() : Wend
um die alle abzuarbeiten.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ich raffs nich...
da steht ein AddGadgetItem....

wo werden denn die ganzen events erzeugt?

ich mein, man muss natürlich "gleichzeitig" die events abarbeiten...
ich seh hier keine schleife irgendwo, wo eine eingefügte eventbearbeitung was bringen würde.

also, egal, ob eins oder viele... wenn ich keine schleife hab, die ich durch ne eventbearbeitung ergänzen kann,
dann ist es schnurz, ob ich direkt vor die hauptschleife noch ein While WindowEvent() : Wend schreibe,
weil in der hauptschleife auch events verarbeitet werden...

wo sollte denn hier sinnigerweise ne bearbeitung hin?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten