Ok, after finally getting 5.8.x(had to wait until I had the money for PDK 5.x), I tried this. I used the following:
use win32::GUI; use threads; use Thread::Queue; # contruct GUI here --> my $Window = new Win32::GUI::Window ( -name => "Window", -topmost => 1, -left => 300, -dialogui => 1, -top => 400, -width => 222, -addstyle => WS_VSCROLL, -height => 300, -text => "Test", #-class => $class, ); $Window->AddButton( -name =>"SomeButton", -top => '30', -left => '1', -text => "TipTest", -tip => "This is a Tip!", -width => 150, -height => 25, ); $Window->Show(); $Window->Enable(); $Window->Center(); my $commandQueue = Thread::Queue->new; threads->new(sub { while (my $command = $commandQueue->dequeue) { eval $command; warn $@ if $@; } }); Win32::GUI::Dialog; sub function { my $var = shift; sleep 5; print $var,"\n"; print "Pending Threads: ", $commandQueue->pending,"\n"; } sub Window_Terminate { for(1.. $commandQueue->pending) { $commandQueue->dequeue_nb(); } undef $commandQueue; return -1; } sub SomeButton_Click { $command This works, but the problem is when I exit the program, I get this "warning" printed to STDOUT: d:\>gui100.pl A thread exited while 2 threads were running. Anyone know how stop this? Also, now that I have 5.8, I hope to be able to use threads more often. Can anyone give any "gotchas" they have found? Joe Frazier, Jr. Senior Support Engineer Peopleclick Service Support Tel: +1-800-841-2365 E-Mail: [EMAIL PROTECTED] > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On > Behalf Of Blair Sutton > Sent: Thursday, June 24, 2004 10:41 AM > To: perl Win32::GUI Users > Subject: [perl-win32-gui-users] Working with threads > > This model works quite well: - > > use win32::GUI; > use threads; > use Thread::Queue; > > # contruct GUI here --> > > my $commandQueue = Thread::Queue->new; > > threads->new(sub { > while (my $command = $commandQueue->dequeue) { > eval $command; warn $@ if $@; > } > }); > > Win32::GUI::Dialog; > > sub SomeButton_Click { > $commandQueue->enqueue("&somefunction(\$with_vars_as_refs)"); > } > > __END > > You will have access in the thread to any variable created > before. You may want to use a Timer to start the thread etc.. > > Blair. > > > > 1. When using threading with win32::gui, would/could I create a > > thread for each gui component/object? For example, from my Master > > loop, could I create a thread that held a Window and every button, > > textfield, etc. contained inside the Window, while another > thread held > > a Dialog Box with all of it"s components (textfields, > buttons, etc.)? > > 2. If I can, from where do I control the Show() method? I tried > > performing this from the Master Loop, but it said, of > course, that my > > $Window didn"t exist. Then, I tried passing the Show() through the > > thread (e.g. $sample_thread->$Window->Show();), but that > didn"t work > > either. > > > > ------------------------------------------------------- > This SF.Net email sponsored by Black Hat Briefings & Training. > Attend Black Hat Briefings & Training, Las Vegas July 24-29 - > digital self defense, top technical experts, no vendor > pitches, unmatched networking opportunities. Visit > www.blackhat.com _______________________________________________ > Perl-Win32-GUI-Users mailing list > Perl-Win32-GUI-Users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users > >