如何使用Lwt编写程序并与Tk接口交互。我尝试使用
在Lwt抢先线程中运行Tk主线程// A simple decorator
@annotation
class MyClass { }
function annotation(target) {
// Add a property on target
target.annotated = true;
}
其中let () =
Lwt.async(Lwt_preemptive.detach Tkthread.thread_main);
Lwt_main.run(main Tkthread.top)
构造接口并运行更新它的线程。这最终导致编程崩溃,导致致命错误(无法创建小部件),之后是核心转储。
将Lwt和Labltk一起使用的正确方法是什么?
答案 0 :(得分:1)
我从未尝试过将LablTk与Lwt一起使用,但tkThread.mli
清楚地说:
Windows需要作业,因为您无法从中进行GUI工作 另一个线程。这在OSX / Aqua上显然也是如此。 即使使用X11,一些调用也需要来自主线程。 基本思路是使用异步(如果你不需要结果) 或者从另一个线程调用Tk相关函数时同步 (例如使用螺纹顶部)。 使用同步,请注意死锁!
因此,我建议用TkThread.sync
包裹您对LablTk的调用。
你也应该在caml-list上提问。可能有人曾经尝试过这个。