in reply to Thread implementation for Win32::GUI

What code have you written and where do you encounter problems?

  • Comment on Re: Thread implementation for Win32::GUI

Replies are listed 'Best First'.
Re^2: Thread implementation for Win32::GUI
by ckant8 (Acolyte) on Mar 27, 2013 at 11:26 UTC
    Please find below code. When i am running it window is freezing. i want to implement thread to not to freeze UI while background process is going on.
    use strict; use warnings; use Net::Telnet; use Win32::API; use Win32::GUI(); my $main = Win32::GUI::Window->new( -name => 'Main', -width => 500, -height => 900, -text => 'Perl', -minsize => 500, 900, ); my $font = Win32::GUI::Font->new( -name => "Comic Sans MS", -size => 8 +,); $main->AddLabel(-text => "Welcome ", -pos => [ 10, 10 ],); $main->AddLabel(-text => "Enter Host Name / IP : ", -pos => [ 10, 33 +], ); my $t= $main->AddTextfield( -name => 'tfResults', -text => "", -pos = +> [ 125, 30 ], -size => [ 100, 25 ], -tabstop => 1, ); my $my_but = $main->AddButton(-text => "Submit",-name => 'btQuery', -p +os => [ 235, 30 ],-size => [ 50, 25 ],); $main->Show(); Win32::GUI::Dialog(); sub btQuery_Click { my $txt1=$t->Text; my $telnet = new Net::Telnet ( Timeout=>1800, Errmode=>'die', + ); chomp $txt1; $telnet->open($txt1); $telnet->waitfor('/login: $/i'); $telnet->print('root'); $telnet->waitfor('/Password: $/i'); $telnet->print('dangerous'); $telnet->waitfor('/# $/i'); print "\nConnected to host :$txt1 "; $main->AddLabel(-text => " Enter custom cmd:",-pos => 100, 100 ,-siz +e => 250, 125 ,); my $t1= $main->AddTextfield(-name => 'tfResults2',-text => "",-pos = +> 130, 100 ,-size => 100, 25 ,); my $submit=$main->AddButton(-text => "Submit",-name => 'Unix_submit' +,-pos => 250, 100 ,-size => 50, 25 ,); sub Unix_submit_Click { } }

      I recommend moving the actual work to be done into its own thread, most likely by using threads and Thread::Queue for the communication. Maybe the worker thread can signal to the main/UI thread by sending a window message.

        Thanks for the reply. Could you post some examples...plz

      If you add:

      use strict; use warnings;

      To the top of your program and then fix-up all the warnings you get; and then format your code so that it is readable; and post that.

      And then explain why you are defining functions within functions?

      And then explain what problems you are having adding threading?

      You might get some help.


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.
        i have updated my code above same page. But i can't post actual script. Similar activities(ls,..) will do on host and print output in GUI. I am a beginner to Perl and Thread implementation. I have gone through the "http://search.cpan.org/~jdhedden/Thread-Queue-3.02/lib/Thread/Queue.pm", but i am confused how to start in my script. Please let me know is there any way to stop GUI hang. If you can help me, it will be a great help to me.
Re^2: Thread implementation for Win32::GUI
by ckant8 (Acolyte) on Mar 28, 2013 at 11:44 UTC
    Thx Corion. Could you please let me know where to start thread, after "$main = Win32::GUI::Window->new( -name => 'Main', -width => 500, -height => 800, -text => 'Perl', -minsize => 500, 800, );" or before that??