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