我的程序中存在标量问题。
我得到了这样的代码:
use threads;
use threads::shared;
use Tk;
$mw = new MainWindow;
my $label = undef;
share($label) my $ok = undef;
share($ok)
HERE IS BUTTON WITH OPTION -command => \&sub1
threads->create('sub2');
sub sub1 {
$top = $mw->TopLevel();
$label = $top->Label( -text => 'something' )->pack();
$ok = 1;
}
sub sub2 {
while (1) {
if ($ok) {
$label->configure( -text => 'i need this' );
$label->update;
}
}
}
我在$label->configure(-text => 'i need this');
中遇到错误:
Invalid value for shared scalar at xxx.pl
我只需要从线程更新我的标签文本,我不能这样做。
感谢您的建议。
答案 0 :(得分:2)
该错误表明Tk
标签对象并不是为了支持在ithreads下共享而编写的,这种情况我认为非常难以弥补。
我建议你做一个线程负责更新UI小部件并让该线程从其他线程接收更新指令。尴尬,但可行。