Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GUI冻结-Perl-Tk_Perl_Perltk - Fatal编程技术网

GUI冻结-Perl-Tk

GUI冻结-Perl-Tk,perl,perltk,Perl,Perltk,我使用Perl/Tk开发了一个小应用程序。当按下应用程序中的一个按钮时,应用程序将从web获取数据。但问题是GUI在返回控件之前会挂起。我知道这是由于延迟,所以主窗口没有响应。我使用了update()函数,但问题仍然存在。所以我搜索了一下,知道我们可以用线程来解决这个问题。但我不知道如何在Perl/Tk中使用线程。这是我的示例代码 use warnings; use Tk; my $mw = new MainWindow; my $button = $mw -> Button(-tex

我使用Perl/Tk开发了一个小应用程序。当按下应用程序中的一个按钮时,应用程序将从web获取数据。但问题是GUI在返回控件之前会挂起。我知道这是由于延迟,所以主窗口没有响应。我使用了update()函数,但问题仍然存在。所以我搜索了一下,知道我们可以用线程来解决这个问题。但我不知道如何在Perl/Tk中使用线程。这是我的示例代码

use warnings;
use Tk;

my $mw = new MainWindow;

my $button = $mw -> Button(-text => "Fetch", 
        -command => \&FetchData)
    -> pack();
MainLoop;

sub FetchData
{
//Fetching data from Web
}

提前感谢。

我从未尝试过这个,但这可能会帮助你开始。

感谢链接,但他们没有提到在单击按钮时调用线程,所以你能告诉我怎么做吗?从链接中得到线索。Thanks@Winbros-好的,在关于PerlMonks的讨论中,一个叫zentara的家伙说:“线程必须在调用任何Tk小部件之前创建。你在按钮回调中创建线程违反了这一规则。”所以看起来你必须在之前创建线程,然后通过共享变量进行通信。至少这是zentara的建议。