【问题标题】:How do I use threads with gtk2hs with ghc-7.4?如何在 ghc-7.4 中使用带有 gtk2hs 的线程?
【发布时间】:2012-02-10 20:56:49
【问题描述】:

以下程序无法按预期运行:

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

标签未添加到窗口中。我用 -thread 编译。我做错了吗?

【问题讨论】:

    标签: multithreading haskell gtk2hs


    【解决方案1】:

    我相信widgetShowAll 只在执行时显示孩子,所以如果你的containerAdd 在那之后发生,它就不会出现。我建议在传递给postGUISync 的操作中明确显示标签,如下所示:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-04
      • 1970-01-01
      • 2011-10-20
      • 2023-03-23
      相关资源
      最近更新 更多