我有一个用于文本编辑器的 Visual Studio 扩展,使用 MEF 大括号突出显示、语法突出显示、大纲显示等。
Visual Studio 会在每个文件的多个线程上运行我的标记器,还是只序列化?
我有一个用于文本编辑器的 Visual Studio 扩展,使用 MEF 大括号突出显示、语法突出显示、大纲显示等。
Visual Studio 会在每个文件的多个线程上运行我的标记器,还是只序列化?
Visual Studio 编辑器只会在ITextBuffer
/关联的线程上运行序列化的标记器ITextView
。由于 Visual Studio 仅在主线程上创建有趣的ITextView
/ITextBuffer
实例,因此这里没有太多线程问题。
我小心翼翼地在上面说有趣,因为在某个时间点,调试器确实ITextBuffer
在后台线程上创建了一些实例。但是他们使用了自定义内容类型,因此扩展通常不会绑定到它。
请注意,该ITagger<T>
API 可用于任何扩展。从技术上讲,另一个扩展可以通过几种方式创建线程问题
ITextView
,从而导致您的ITagger<T>
实现也在那里创建。