2016-03-01 3 views
-1

Я создаю плагин Visual Studio 2013 (нормально, пакет расширения на самом деле), который пытается вставить определенные строки * в открытый файл .vb или .cs, но когда я доберусь до точка фактического вставки текста экземпляр редактора замирает на некоторое время. Если число строк несколько раз, VS вернется через несколько секунд, но для 20 + строк редактор просто не возвращается.Visual Studio зависает при манипулировании TextSelection.Text

Это суть того, что мой код выглядит следующим образом:

String myText = "foo"; 

DTE dte = this.GetService(typeof(DTE)) as DTE; 
EnvDTE.TextSelection selection = (dte.ActiveDocument.Selection as EnvDTE.TextSelection); 

selection.Text = ""; 

//Here myText ends up having some content written into it 

selection.Text = myText; //VS hangs after this point 

Любые подсказки относительно того, что я могу сделать, чтобы исправить (или, по крайней мере отладки) это? Я пробовал профайлер VS, но все, что я получаю, это то, что 98% времени тратится впустую на «msenv.dll», и я не вижу, что происходит внутри.

* (берет SQL из буфера обмена и перерывов он в линии обернутые в AppendLine вызывает к StringBuilder)

+0

, какая строка на нем висит, когда вы проходите через код, эта строка 'GetService' вы читаете документацию https://msdn.microsoft.com/en-us/library/envdte.textselection.aspx – MethodMan

+0

Нет .. Это последняя строка кода, как в моем примере. Спасибо. –

+0

Я не вижу строкового кода строчки .. почему вы не показываете весь соответствующий код ..? – MethodMan

ответ

0

ОК, я не видел этот вопрос: https://stackoverflow.com/a/1096737/1605873

Оказывается, мне просто нужно было использовать selection.Insert(myText);, а не selection.Text = myText; это абсурдно быстрее.