我试图在我的windows系统中使用perl调用一个使用线程的函数
但是,在执行期间,当我单击按钮创建一个线程进程时,会显示Microsoft错误消息,如下所示,
" Perl命令行解释器。
请告诉微软这个问题。"
我在Perl中使用的代码片段:
use threads;
##### Creation of a dialog box using Tkx Module #####
$Run = $MainFrame -> new_ttk__button(
-text => TEXT,
-width => 15,
-command => sub
{
threads -> create({"stack_size" => 64*4096,
"exit" => "thread_only"},
\&CALLING_FUNCTION);
}
);
答案 0 :(得分:0)
看起来Tk遇到线程困难:Perl Update UI on Long Thread
你需要在Tk对象之前创建你的线程,也许它会以这种方式工作。
但是,使用带有Tkx的线程可能会很冒险。我得到了段错误 当我试图加入线程而不是分离它时,我得到了一个 如果我在startWork()中移动$ t,则使用下面的代码进行段错误。这个 讨论表明您可能需要先启动该线程 创建任何Tk小部件,使其可靠地工作。
您的问题是因为您要将Tk代码复制到其中 你的线程,在脚本的后期启动它。当一个线程得到 推出后,主线程的副本就发了,所以如果有Tk的话 小部件已经存在,它们会被复制进来。即使你没有 在线程中使用Tk代码,它可能会导致问题,并且会 不可靠的。所以......在开始任何Tk之前先创建你的线程 小部件代码。