Perl Tk 在后台重复而不冻结应用程序

发布于 2025-01-20 21:31:05 字数 534 浏览 0 评论 0原文

我有使用中继器的Perl TK应用程序(MW->重复)。

中继器正在调用一个函数,可以刷新GUI内部的一些TK对象。

此中继器功能需要一些时间来执行 - 因此将应用程序冻结了几秒钟。我还在哈希内部存储对象,因此我正在尝试在中继器中配置“复杂”数据结构。

我一直在寻找一种在后台执行此功能的方法(可能是线程?),但不幸的是我无法做到。

我知道我需要使用线程::共享。但是,当我试图将对象分配到哈希中时,它不会让我说“共享标量的无效价值”。

我尝试过的一个实验之一:

#main
our %hash :shared;
my %p,%p2;
$hash{$key} = \%p;
$hash{$key}{$key2} = \%p2;
$hash{$key}{$key2} = Button(...)

#inside the repeater - with threads
$hash{$key}{$key2}->configure(-text => "foo");

我在这里想念什么?

谢谢。

I have Perl Tk application which uses a repeater (mw->repeat).

The repeater is calling a function which refreshes some Tk objects inside the GUI.

This repeater function is taking some time to execute - hence it freezes the application for several seconds. I'm also storing objects inside hashes and therefore I'm trying to configure "complex" data structures inside the repeater.

I've been looking for a way to execute this function on the background (possibly thread?) but unfortunately I could not make it.

I understand that I need to use threads::shared. However, when I'm trying to assign the objects into the hash it won't let me, saying "Invalid value for shared scalar".

One of the experiments I've tried:

#main
our %hash :shared;
my %p,%p2;
$hash{$key} = \%p;
$hash{$key}{$key2} = \%p2;
$hash{$key}{$key2} = Button(...)

#inside the repeater - with threads
$hash{$key}{$key2}->configure(-text => "foo");

What do I miss here?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文