perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 26
Click for quality!




11.02.2012 / 07:47

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragTK Widget aus thread heraus ansprechen
Seitenanfang
Hallo,

ich möchte mehrere tasks parallel laufen lassen.
Alle Tasks benötigen eine (unabhängige) Schleife um die Arbeit zu vollrichten. Deswegen habe ich einen Thread erzeugt und starte mehrere instanzem davon.

Jeder thread soll seinenStatus in ein gemeinsames UI melden.

Hier ist mein (verkürztes) Script


use strict;
use Tk;
use Threads;

my $name_A = "Init thread A";
my $name_B = "Init thread B";
my $name_C = "Init thread C";
my $name_D = "Init thread D";

my $TK_top = MainWindow->new();
my $TK_text_A_name = $TK_top->Label( -textvariable => \$name_A )->form(-left => ['%0', '2'], -top => ['%0', '2'], -right => ['%50', '-8']);
my $TK_text_B_name = $TK_top->Label( -textvariable => \$name_B)->form(-left =>['%50', '8'], -top => ['%0', '2'], -right => ['%100', '-120']);
my $TK_text_A_log = $TK_top->Text()->form(-left => '%0', -top => $TK_text_A_name, -bottom => '%50', -right => ['%50', '0']);
my $TK_text_B_log = $TK_top->Text()->form(-left => ['%50', '0'], -top => $TK_text_A_name , -bottom => '%50', -right => '%100');
my $TK_text_C_name = $TK_top->Label( -textvariable => \$name_C )->form(-left => ['%0', '2'], -top => [$TK_text_A_log, , '5'], -right => ['%50', '-8']);
my $TK_text_D_name = $TK_top->Label( -textvariable => \$name_D )->form(-left =>['%50', '8'], -top => [$TK_text_A_log, , '5'], -right => '%100');
my $TK_text_C_log = $TK_top->Text()->form(-left => '%0', -top => $TK_text_C_name, -bottom => '%100', -right => ['%50', '0']);
my $TK_text_D_log = $TK_top->Text()->form(-left => ['%50', '0'], -top => $TK_text_C_name , -bottom => '%100', -right => '%100');

sub myThread
{
my @args = @_;
my $textbox = @args[0];
my $lablename = \@args[1];
my $filename = @args[2];
my $line;

$name_A = "DOES NOT WORK";
$lablename = "DOES NOT WORK EITHER";

$textbox->insert("end", "Some message\n");
$textbox->insert("end", $filename);
}

$name_A = "About to start thread A";
$name_B = "About to start thread B";
$name_C = "About to start thread C";
$name_D = "About to start thread D";

my $threadA = threads->create('myThread', $TK_text_A_log, \$name_A, 'This is thread A');
my $threadB = threads->create('myThread', $TK_text_B_log, \$name_B, 'This is thread B');
my $threadC = threads->create('myThread', $TK_text_C_log, \$name_C, 'This is thread C');
my $threadD = threads->create('myThread', $TK_text_D_log, \$name_D, 'This is thread D');

MainLoop();
exit;

Es funktioniert leider nicht ganz wie erwartet.
Die threads können in ihre Meldungen in die Textboxen schreiben (mittels $textbox).

Allerdings funktioniert es nicht mit den textvariablen der Labels.

Hat jemand eine Idee???

Vielen Dank,
Thorsten

Datum: 03.04.2009-13:52

-






-
-