Thread nicht-blockierende callback-Subroutine (Tk)
(1 answers)
Opened by FoolAck at 2008-05-18 15:35
Hi!
Folgendes Beispiel: Code: (dl
)
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..) Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 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(); ps: {sleep 10} ist natürlich nur ein Platzhalter für die eigentliche (zeitintensive) subroutine. |