Что это за «Ожидание фоновой операции» в Visual Studio 2012?

96

Иногда, но довольно часто, без видимой причины, VS 2012 блокирует диалог, в котором говорится: «Ожидание завершения фоновой операции». Например, это может произойти во время простого редактирования старого кода, а не при явном вызове какой-либо команды IDE.

Что вызывает это, и что я могу с этим поделать?

Я использую ReSharper 7, и я не единственный, кто сталкивался с этим.

ПрофК
источник
4
Это немного левое поле, поэтому я буду делать комментарий, а не отвечать, но если я получаю это, обычно происходит потому, что у меня есть окно RDC, открытое для другого компьютера, и недавно я что-то поместил в это окно RDC в буфер обмена (через копировать / вырезать), то иногда вы обнаружите, что он в настоящее время пытается перенести его на мою локальную машину ... и поэтому мой VS ожидает завершения. Закрытие RDC обычно сортирует его
freefaller
2
Спасибо @freefaller, но у меня никогда не было активных удаленных подключений.
ProfK
3
Есть точная проблема! Это действительно очень раздражает ... не могли бы вы найти источник проблемы? (PS У меня нет ReSharper)
Махмуд Моравей 02
1
У меня также есть проблема с VS2010, так что это не проблема Vs2012. Для меня это происходит, когда я открываю Решение, в котором открыто много исходных файлов. После убийства VS с помощью ProcExp VS не открывает все файлы, и проблема исчезла.
magicandre1981
7
Бывают моменты, когда я просто хочу пойти в ближайший офис Microsoft и устроить там резню в Техасе. Спокойно пишу код, мысли в голове крутятся когда БАМ! пощечина "фоновые операции, да".
Филип Вондрашек,

Ответы:

62

У меня была такая же проблема, особенно на страницах cshtml. Я нашел эту страницу: https://devblogs.microsoft.com/aspnet/visual-studio-11-beta-razor-editor-issue-workaround, которая предлагает изменить параметр отступа в Инструменты> Параметры> Текстовый редактор> HTML> Вкладка на Смарт вместо блока . В моем случае он уже был установлен на Smart, и изменение его обратно на Block устранило проблему.

Обновление: я был неправ, это не исправило диалог, оно просто задержало его, пока я не скопировал или вставил. Что в итоге сработало для меня, так это перейти в Инструменты> Настройки импорта и экспорта ...> Сбросить все настройки .

Возможно связанный вопрос: Visual Studios 2010 - Asp.net MVC 4 Beta - длительные задержки при вставке и частые сбои

Уолтер
источник
26
Я проголосовал за и собираюсь комментировать. Обновление в этом ответе решило для меня проблему копирования / вставки с VS2012 - проблему, над которой я боролся более двух недель, пытаясь решить. Обратите внимание, что я выбрал «Веб-разработка (только код)» в последней части мастера сброса всех настроек. ПОЖАЛУЙСТА, ГОЛОСОВАТЬ, ЧТОБЫ ЭТОТ ОТВЕТ РАССКАЗАЛСЯ ЛУЧШЕ ПОИСКОВ
REMESQ
2
То, что сказал Ремеск, сработало для меня. Это решило проблему мгновенно. Спасибо.
draconis
1
+1 Лично я не мог вставлять файлы в формате aspx без появления сообщения «Ожидание фона ...». Перейдя в Инструменты> Настройки импорта и экспорта> Сбросить все настройки и, наконец, выбрав « Веб-разработка», когда его спросили, какую коллекцию сбросить, я исправил это. Спасибо.
Энтони Уолш
Сброс всех настроек работает некоторое время, но то и дело у меня все еще появляется этот надоедливый аргумент модального окна !!!!
coffekid
2
+1 С Resharper 7 переключение Инструменты> Параметры> Текстовый редактор> Настройка HTML на блокировку от «умного» исправили проблему для меня
Тахбаза
32

Это очень общая диагностика. Он запускается COM, активно используемым в Visual Studio для реализации расширяемости. Базовым триггером является интерфейс IMessageFilter. Триггер срабатывает, когда COM маршалирует вызов метода другому потоку, и этот вызов не завершается в течение 60 секунд.

В самом уведомлении мало смысла, оно говорит вам то, что вы уже знаете. По прошествии 60 секунд вы обычно уже замечаете, что что-то не работает. Если не считать того небольшого количества полезных знаний, что Visual Studio на самом деле не совсем умерла. Однако вызов должен завершиться, прежде чем VS снова станет пригодным для использования. Вы мало что можете сделать, кроме как постучать ногой и ждать.

Эта проблема почти всегда вызвана надстройкой. Решарпер, безусловно, хороший кандидат. Вы найдете виновника, отключив надстройки одну за другой, пока проблема не исчезнет. Это проблема, типичная для новых версий Visual Studio: поставщикам надстроек требуется время, чтобы исправить ошибки и зависания. Обратитесь к поставщику за поддержкой и поищите обновления, которые могут решить проблему.

Ганс Пассан
источник
7

У меня сработало удаление файла "suo".

Крис Рикард
источник
1
Я дошел до этого состояния после многократного переключения между ветками в git. Удаление файла .suo для проекта тоже
помогло
6

У меня была такая же проблема, и в моем случае это был DevExpress.

Казалось, что Visual Studio зависает каждый раз, когда я выполняю операцию копирования или вырезания, вызывая сообщение:

«Ожидание завершения фоновой операции».

Оказалось, что на самом деле он выполнял одноразовую задачу в фоновом режиме, и это действительно занимало время (более 5 минут).

Возможно, если бы я ждал нормально, он мог бы исчезнуть, но в конечном итоге это было исправлено, так это отображение панели инструментов (было скрыто / свернуто), что, в свою очередь, вызвало окно с сообщением:

"добавление [SomeDevExpressAssemblyNameHere] .dll"

это постоянно обновлялось, добавляя имена всех dll, необходимых DevExpress для заполнения панели инструментов.

Таким образом, я мог видеть прогресс операции, и после ее завершения я мог снова использовать копирование / вырезание, как обычно.

Надеюсь это поможет.

Рик Токио
источник
Это случилось со мной после установки новой версии CodeRush и удаления старой. После простого ожидания (очень долгого) времени VS.Net просто закончил все, что делал.
CodingBarfield
Грррр - это тоже была моя проблема, мой набор инструментов был спрятан, поэтому я не мог видеть, что происходит.
Fergal Moran
Другой пользователь DevExpress, я обнаружил, что он делает это после каждого обновления DevExpress. Занимает около 5 минут, после чего фиксируется навсегда.
KingCronus
5

Для меня исправление заключалось в обновлении Web Essentials 2012 до версии 1.8.

Проблемная версия была 1.6

Римский
источник
Я пытаюсь отключить WebEssentials, но проблема не устраняется. При удалении проблема решена.
Риккардо Бассиличи,
5

Инструменты> Параметры> Текстовый редактор> HTML> Вкладки -> Идентификация -> Никакие настройки не решили эту проблему для меня.

Джиты
источник
1
Переход на «блокировку» также решает проблему.
Дженни О'Рейли
3

Это исправило это для меня:

Инструменты> Параметры> Текстовый редактор> HTML> Разное

Снимите флажок с параметра «Автоматическая идентификация элементов при вставке в представлении исходного кода».

Я опубликую обновление, если проблема вернется.

TheTim
источник
2

У меня была эта проблема в течение нескольких дней, я попытался удалить и переустановить мою Visual Studio 2012 Ultimate edtion SP3 ... Все еще не работал. Поэтому я удалил все свои расширения (инструменты git для VS 2012 и загрузчик пакетов Nuget), перезапустил свой VS, и он снова заработал, как шарм! Надеюсь, что это работает !

Удачи!

Лукас МАККЕННА
источник
1

У меня возникла эта проблема при запуске Visual Studio на виртуальной машине - Virtual Box 4.2, работающей в Mac OS X Mountain Lion, на которой размещена новая установка Windows 7, на которой ничего не установлено, кроме Visual Studio. Я обнаружил, что проблема была вызвана двумя отдельными проблемами.

Во-первых, мой проект находился в папке, доступной для хоста. Другими словами, в гостевой системе Windows мой проект появился на сетевом диске. Таким образом, открытие проекта в Visual Studio с сетевого диска, казалось, вызывало эту проблему, потому что проблема исчезла, когда я скопировал проект на диск C виртуальной машины Windows и открыл его в Visual Studio из копии на диске C.

Во-вторых, я снова начал испытывать проблему, когда жесткий диск виртуальной машины был заполнен. На жестком диске у меня было около 1 ГБ свободного места. Когда я увеличил размер жесткого диска виртуальной машины, эта проблема исчезла.

Machaba
источник
1

Только что воспроизвел аналогичную проблему с надстройкой Codemaid. Нашел этот разговор :

В этой проблеме много деталей, но, чтобы попытаться повторить проблему, заключается в том, что VS2012 C ++ API представил проблему взаимоблокировки, когда к API обращаются из потока пользовательского интерфейса (например, из контекста WPF, такого как Spade). Это не было проблемой в VS2010, и Microsoft исправила это для VS2013, но они не будут исправлять его для VS2012.

Похоже, это указывает на то, что исправление (для Codemaid) должно появиться:

Следите за этой веткой, чтобы узнать о текущем решении проблемы. Он связан с этим более масштабным переписыванием, поэтому я работал над ним, добавляя сначала множество модульных тестов, чтобы гарантировать, что функциональность остается неизменной после изменений.

dtmland
источник
1
Сейчас это исправлено (версия 0.7.0). Это было причиной моей версии этого, так что спасибо!
dlanod
1

Мне показалось, что это связано с синтаксисом бритвы, поскольку у меня он был только в одном конкретном файле.

Например, если я поместил следующий код в одну строку, у меня возникла описанная проблема.

@section BodyClassName {примечание}

Но при помещении закрывающей круглой скобки в следующую строку проблема исчезла

@section BodyClassName {примечание
}

С уважением

Stijn

Stijn Liesenborghs
источник
1

Далеко не идеальное решение, но попробуйте запустить визуальную студию в режиме администратора, я перепробовал практически все, и это было единственное, что у меня сработало.

Quade
источник
1

Откройте Visual Studio, создайте новое приложение MVC, закройте новое приложение, откройте старое приложение, и оно работает!

abiNerd
источник
Та же проблема, что и OP, возникла неожиданно. VS2013 в проекте WebForms. Ваша процедура устранила проблему.
secretwep
1

Проверьте, блокирует ли IIS или другой процесс (возможно, BizTalk) ваши библиотеки DLL / ссылки.
Убейте / остановите IIS или другой процесс, если он

дом
источник
0

Думаю, я нашел ключ! Все заканчивается на dcomcnfg.exe!

Откройте его и пройдите по следующему пути:

Службы компонентов> компьютеры> мой компьютер> конфигурация dcom

после нажатия на dcom вы увидите множество предупреждений, зависящих от количества компонентов на вашем компьютере.

Щелкните Да в каждом окне сообщения, чтобы добавить правильную запись для dcom.

Сенамас
источник
1
Как вы сузили круг до DCOM? На какой ОС вы работаете? Я не вижу никаких предупреждений на моем компьютере с Win 7 x64.
Mrchief
0

Я обнаружил, что VS также загружает пакеты во время «фоновой операции». Вы можете удалить ненужные расширения, чтобы ускорить работу.

Libor
источник
0

Я исправил это несколько недель назад после того, как отключил синхронизацию буфера обмена TeamViewer 8! теперь он появляется без причины, поэтому я попытался сбросить все настройки, и у меня это сработало.

Афшин
источник
0

У меня была та же проблема, и запуск VS от имени администратора, похоже, помог мне (я разместил аналогичный вопрос в Visual Studio 2012 Express зависает с сообщением «Ожидание завершения фоновой операции» в команде форматирования документа, которая была отмечена как дубликат этого, так что я решил, что поделюсь и здесь).

Крис Сирлз
источник
0

Для меня это был аддон Resharper, открывающий диалог, который не отображался. Я нашел только значок диалога в меню скрытых значков на панели задач. Когда я избавился от диалога, Visual Studio сразу же вернулась в нормальное состояние.

JanBrus
источник