Hi!
Folgendes Beispiel:
perl -MTk -e 'MainWindow->new->Button(-command => sub {sleep 10})->pack; MainLoop'
"blockiert" ja immer solange, wie die subroutine wartet. Gibt es eine (einfache) Möglichkeit eine callback-Funktion "non-blocking" zu implementieren? Muss das über threads oder so gehen? (Kenn mich da nicht so aus.)
Ich hab schon von $mw->update() gehört und das klingt eigentlich ziemlich perfekt, aber das könnte ich maximal alle 3-4 Sekunden oder so in der Callback-Funktion aufrufen. Deswegen frag ich hier mal, obs da nicht vielleicht etwas "noch einfacheres" gibt?
So gehts btw scheinbar nicht: (die callback-Funktion blockiert wohl auch repeat..)
use Tk;
my $mw = MainWindow->new();
sub bar {my $mw = shift; $mw->update()}
$mw->repeat(200, [\&bar, $mw]);
$mw->Button(-text => "zZzZz", -command => sub {sleep 10})->pack();
MainLoop();
Während wenn ich $mw->update in der callback-sub direkt aufrufe gehts natürlich, aber wie gesagt, da ist die Auflösung etwas, hm, grob.
ps: {sleep 10} ist natürlich nur ein Platzhalter für die eigentliche (zeitintensive) subroutine.