Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re: Keeping the user informed: A Tk/Threads question

by Joost (Canon)
on Jul 07, 2004 at 14:45 UTC ( #372401=note: print w/ replies, xml ) Need Help??


in reply to Keeping the user informed: A Tk/Threads question

Good question. If you can spread your processing in smaller bits and you can get the smaller bits called from the MainLoop, everything will work. The way I do it in one application is that I build my own MainLoop:

use Tk::Event qw(DONT_WAIT); while (1) { if ($self->run) { # test if we need to process $self->process_a_bit() # process a tiny bit } return if $self->quit; # test if quit status was set DoOneEvent(DONT_WAIT); # do normal Tk event select undef,undef,undef,0.0001; # wait for a bit }
I did this, because my processing was not easily adjusted into the normal Tk::Eventloop processing and it needed to be called a lot ("live" 44Kz audio stream processing, with 100 samples per process_a_bit call)

If you want to go this route, you want to adjust the timing of the select() and process_a_bit() calls until your GUI and processing run fast enough, and it doesn't lock up the whole machine when there is no processing being done :-)

Alternatively, if you're able to run your processing based on file events or signals, you can take a look at the Tk::Eventloop documentation for registering extra events in the normal MainLoop.

Oh yes, and you want something like Tk::ProgressBar but you probably know that already :-)


Comment on Re: Keeping the user informed: A Tk/Threads question
Download Code
Re^2: Keeping the user informed: A Tk/Threads question
by Grygonos (Chaplain) on Jul 07, 2004 at 15:32 UTC

    Yeah Tk::ProgressBar would be best, but I don't know (until its already over) how far along a file would be at point X. Basically the data is being read from the file in a while <DATA> loop, to me that doesn' tmuch lend itself to that... is there a way to pop up a dialog and auto-dismiss it? or something?

    /me needs to buy Mastering Tk

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://372401]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (9)
As of 2015-07-02 05:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (27 votes), past polls