0

我只是将 Win32-GUI 与线程(Perl 5.16)结合使用,我想出了一些我不太理解的警告和错误。

代码如下:

    use strict;
    use warnings;
    use Win32::GUI();
    use threads;

    my $main = Win32::GUI::Window->new(
        -name => 'main',
        -title => 'Multithreaded Test',
        -size => [300,100],
    );
    my $button1 = $main->AddButton(
        -name => 'button1',
        -text => 'Click me',
        -pos => [10,10],
        -width => 120,
    );
    sub button1_Click {
        my $thread1 = threads->create(\&do_something);
        $thread1->join();
    }
    sub do_something {
        sleep(1);
    }
    $main->Center();
    $main->Show();
    Win32::GUI::Dialog();

当我单击按钮并在 1 秒后加入线程时,我得到以下控制台输出:

在全局销毁期间,可在 C:/Perl/site/lib/Win32/GUI.pm 第 3480 行对错误池 35bcd90 而不是 2a1718 进行释放。在全局销毁期间,可在 C:/Perl/site/lib/Win32/GUI.pm 第 3480 行对错误池 35bcd90 而不是 2a1718 进行释放。标量泄露:1

我发现了几个关于这个“标量泄露”问题的主题,但遗憾的是不是一个有效的解决方案。

你有什么主意吗?

谢谢,

最大限度。

4

1 回答 1

0

这可能不是问题,但您需要Terminate为您的main窗口提供一个停止主消息循环的处理程序。像这样

sub main_Terminate { -1 }
于 2013-01-16T21:06:01.267 回答