2

我正在开发一种语言服务,并希望用户键入代码后的解析速度更快。

现在我依赖于 MSDN 上记录的ParseReason.CheckandOnIdle机制,但它通常在用户输入代码后很长时间才被调用。有时它有助于将光标移动到另一行以更快地触发它。

我想做的是在检测到用户输入文件后强制解析文件。我能够检测到用户何时键入,但我不知道如何使用ParseRequest.

4

2 回答 2

0

我遇到了类似的问题,我想扫描未在 VS 中打开的文件。我能做的最好的事情就是抽象出我的解析功能,这样它就可以被 VS 调用,但也可以在我需要的时候被另一个内部函数调用到我的扩展中,而无需通过 VS,这会将我的解析结果存储到与ParseRequest 上的直接 VS 调用。

不过,我很想知道您是否找到更好的方法。

于 2012-02-29T01:29:01.083 回答
0

您可以尝试调用BeginParse()您的Source实现。这创建了一个ParseRequest带有Check解析原因的。我关闭了OnIdle语言服务中的计时器并对其进行了测试,它似乎可以正常工作。

如果您检测用户按键的代码可以访问您的LanguageService实现实例,那么您可以使用service.GetSource(...).BeginParse(). 如果它可以访问Source自身,那就更容易了。

于 2014-02-27T21:20:44.313 回答