如何在DLR脚本主机上执行脚本时获取运行时上下文?

时间:2012-06-13 07:50:21

标签: .net ironpython ironruby dynamic-language-runtime

目前,我正在进行一项案例研究,将IronRuby整合到我们的核心产品中。 脚本的执行只能以同步方式执行,因此我计划在每个线程中执行脚本。

但另外我需要更多地控制脚本执行,尤其是。我需要一种方法来暂停脚本并在以后恢复它。 我想我需要存储一个堆栈帧包括。在脚本暂停时的所有变量,我称之为“运行时上下文”。唉,我没有找到一种以所需方式“监控”脚本执行的方法。 (我通过动态对象使用回调函数来检查托管语言,但是这种技术没有提供所需的上下文。)

有没有人知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您可能会使用DLR的跟踪API,它通常用于实现调试器,但它没有详细记录。您基本上只是将脚本“中断”到调试器中,然后继续执行。有一些信息here,但它有点过时了。

或者(并且可能更安全,取决于您的脚本正在做什么),您的脚本可以在定义的点返回主机。在Python中我会使用一个生成器;我不确定Ruby,但即使让主机提供一个脚本可以调用的yield()函数也应该足够了。