2015-10-07 23 views
1

如何使用Lwt編寫程序並與Tk接口進行交互。我試圖用如何在Labltk中使用Lwt?

let() = 
    Lwt.async(Lwt_preemptive.detach Tkthread.thread_main); 
    Lwt_main.run(main Tkthread.top) 

其中main構造接口,並運行一個線程更新它運行在一個LWT搶佔線程Tk的主線程。這最終會導致編程崩潰時發生致命錯誤(無法創建窗口小部件),然後進行核心轉儲。

什麼是一起使用Lwt和Labltk的正確方法?

回答

1

我從來沒有嘗試過使用LablTk與LWT,但tkThread.mli清清楚楚地寫着:需要爲Windows

喬布斯,因爲你不能從 另一個線程做GUI的工作。這在OSX/Aqua上顯然也是如此。 甚至使用X11,一些調用需要來自主線程。 基本的想法是使用異步(如果你不需要結果) 或同步,每當你從另一個線程 (例如與線程頂層)調用Tk相關函數。 同步時,要小心死鎖!

因此,我建議將您的LablTk電話打包爲TkThread.sync

您還應該在caml-list上提問。可能有人曾經嘗試過。