method_info.Invoke(Nothing, Nothing)
vsa_engine.Close()
End Sub
该代码创建一个新的、执行脚本的 VsaEngine。它还创建一个新的 ScriptDrawVsaSite 对象(以前的内容所描述的类)。
它使用站点对象的 AddObject 方法来保存对该程序全局 Picture 对象 g_Picture 的引用。它保存了两个对具有不同名称(ThePicture 和 MyPicture)的同一个对象的引用。出于某些原因,VSA 嘲笑我对全局变量和事件源使用相同对象名称的尝试。通过使用 ThePicture 作为全局对象并捕获由 MyPicture 引发的事件,我规避了这个问题。
下一步,该代码初始化 VSA 引擎。它将 RootMoniker 属性设置为 ScriptDrawVsa://Picture/Draw。该值的形式为 protocol://path,其中的 protocol 不是 一个标准协议(如 ftp 或 http)。这只是一个标识服务器中引擎实例的虚构字符串。它在服务器上应当是唯一的,这样,系统就可以从服务器的其他引擎通知该实例。
然后,该代码将引擎的 Site 属性设置为站点对象,并调用 InitNew 方法。然后,它将引擎的 RootNamespace 属性设置为 ScriptDrawNS。这是另外一个多少有点虚构的字符串。
程序再调用该引擎的 RevokeCache 方法。这样就将系统数据从全局程序集缓存 (GAC) 中清除出去(如果有的话)。如果您运行程序并执行一个脚本,该脚本可能存储于 GAC(读为“gack”)中。如果您执行一个新的脚本,该引擎将仍然使用旧的脚本,除非您将其清除出去。
接下来,如果脚本中有错误,则该代码将引擎的 GenerateDebugInfo 属设置为 True,使它调用 OnCompilerError。然后,它获取对该引擎的 Item 集合的引用,该集合包含有关脚本将要使用的库、可编写脚本的对象以及定义那些对象的程序集的信息。
文章来源于领测软件测试网 https://www.ltesting.net/