threads->yield(); #### saveThreadContext; restoreThreadContext; #### #######my $DataQueue = Thread::Queue->new(); ... #wait for data, print data to GUI textbox #######while(Win32::GUI::DoEvents() != -1) { ####### my $tmptxt = $DataQueue->dequeue(); ####### $main_text_window->Append($tmptxt); #######} Win32::GUI::Dialog(); sub mainloop { while (1) { #lots of page getting and number crunching goes here ########## $DataQueue->enqueue("some data"); $main_text_window->Append($tmptxt); } }