Does std.net.curl: download have support for callbacks?

Cogitri oss at cogitri.dev
Thu Jun 11 08:13:19 UTC 2020


On Thursday, 11 June 2020 at 06:13:59 UTC, adnan338 wrote:
> On Thursday, 11 June 2020 at 06:05:09 UTC, adnan338 wrote:
>> I would like to set a callback for the `download()` function 
>> but I do not seem to find a way to add a callback to the 
>> procedure.
>>
>> [...]
>
> I have also been told that Gtk is not thread safe. What does 
> this mean and does it effect me on this scenario?

That means that you must not access GTK objects from anything but 
your mainthread, so e.g. spawning a new thread to listen for 
progress on the curl request and updating the thread directly 
from there wont work. You could use glib.Idle or glib.Timeout to 
listen for updates in your mainthread without blocking it.
In case you need to do something heavier (e.g. decode a big 
response) you probably want to do that in a separate thread to 
not block your mainthread (and as such make your UI unresponsive 
while the decoding blocks the thread). In that case I'd recommend 
using message passing, meaning that you spawn a separate thread, 
do your decoding there and then send the result back to your 
mainthread and manipulate the GTK widget there.


More information about the Digitalmars-d-learn mailing list