Summary

I’m regularly downloading a couple of files. Not to slowdown my 4DOffice.app I start a process and send this process a list of URLs to be downloaded, and might add to this list further URLs while that process is still running. Lots of code to ensure the communication. These days I tried a WORKER-process instead.
CALL WORKER($workerWeb;Current method name;“Worker_DownloadFile“;$winRef_L;$url). Works, flawlessly.


Muß ich mehrere Files aus dem Web laden, dann benutze ich dazu meine 4DBüro.app. Ich starte einen neuen Prozeß, der im Hintergrund ackert. Dem Prozeß übergebe ich die Liste der URLs zum Abarbeiten. Während der Prozeß läuft, kann ich weitere URLs hinzufügen. Das ist viel Aufwand für die Kommunikation. Dieser Tage habe ich einen WORKER-Prozeß eingerichtet: CALL WORKER($workerWeb;Current method name;“Worker_DownloadFile“;$winRef_L;$url). Funktioniert bestens.

Worker download files

Anstatt selber eine Liste der URLs zu führen, schicke ich dem Worker jede URL als eigenen CALL WORKER. Der Worker arbeitet sie nach Eingangsreihenfolge ab.

Dann schloß ich das Fenster und das schoß unbeabsichtigt den Worker ab, der noch Jobs abzuarbeiten hatte.

KILL WORKER

KILL WORKER

Nix passiert. Erst wurden alle Aufträge abgearbeitet und danach erst wurde KILL WORKER($workerWeb) ausgeführt. Sollte das ein Bug sein, möchte ich den Bug behalten.



this is how the WORKER-part of my method looks like:

Worker download files

Instead of keeping track myself of the to be downloaded URLs I’m calling CALL WORKER for every single URL. The Worker does do the download in order of calls. Saves me a lot of process-communication.

Then I closed the window and killed the worker, which still had jobs to be done, unintentional.

KILL WORKER

KILL WORKER

Everything is fine. First all jobs were executed and then KILL WORKER($workerWeb) happened. If this is a bug, I like to keep this bug.