2012-02-10 52 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))