2012-02-10 23 views
3

預期下面的程序不起作用:如何在ghc-7.4中使用gtk2hs的線程?

module Main where 

import Graphics.UI.Gtk 
import Control.Monad.IO.Class (liftIO) 
import Control.Concurrent (forkIO) 

main = do 
    unsafeInitGUIForThreadedRTS 
    window <- windowNew 
    windowSetDefaultSize window 200 200 
    label <- labelNew (Just "Hello") 
    forkIO (postGUISync (containerAdd window label)) 
    on window deleteEvent (liftIO mainQuit >> return True) 
    widgetShowAll window 
    mainGUI 

標籤不添加到窗口。我用-threaded編譯。我做錯了嗎?

回答

2

我認爲widgetShowAll只顯示在執行時的孩子,所以如果你的containerAdd之後發生,它不會出現。我建議明確顯示標籤在您傳遞給postGUISync的行爲中,如下所示:

forkIO (postGUISync (containerAdd window label >> widgetShow label))