2011-05-13 176 views
1

我開發了一個使用Perl/Tk的小應用程序。當應用程序中的其中一個按鈕被按下時,應用程序將從網絡獲取數據。但問題在於GUI在控制返回之前會變得懸而未決。我知道這是由於延遲導致主窗口無響應。我使用了update()函數,但問題仍然存在。所以我谷歌周圍,並知道我們可以使用線程來克服這個問題。但我不確定如何在Perl/Tk中使用線程。這裏是我的示例代碼GUI凍結 - 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 
} 

在此先感謝。

回答

3

從來沒有試過這個,但是這個PerlMonks thread from 2008 "Perl Tk and Threads"可能會幫助你開始。

+0

感謝您的鏈接,但無處可談,因爲他們在點擊按鈕時討論調用線程,所以請您告訴我該怎麼做? – Allwyn 2011-05-13 15:32:41

+0

從鏈接中得知線索。謝謝 – Allwyn 2011-05-13 16:56:09

+2

@Winbros - 那麼,在關於PerlMonks的討論中,一個名爲zentara的人說:「線程必須在任何Tk小部件被調用之前創建,通過在按鈕回調中創建線程來違反該規則。所以看起來你必須在之前創建線程,然後通過共享變量進行通信。至少這是zentara的建議。 – Lumi 2011-05-13 19:20:17