提交 a0bfff20 编写于 作者: K Kevin Pilch-Bisson

Disable pumping in one more place in the project system

Windows erorr reporting shows reports of crashes due to LockRecursionException
due to the following pattern:
* ASP.NET design view forces a lazy loaded tab to be populated during solution load
* That causes us to need to start pushing to workspace hosts in
  VisualStudioProjectTracker.StartPushingToWorkspaceAndNotifyOfOpenDocuments
* Ends up waiting in Workspace.OnDocumentOpened.
* Waiting pumps, and ASP.NET is finished parsing, so it tries to set the compilation options
* Workspace.OnCompilationOptionsChanged throws because the lock is the same one being waited
  on by Workspace.OnDocumentOpened.

Fixes one of the causes of internal bug 149765.
上级 b78d8e01
......@@ -215,9 +215,12 @@ internal void AddProject(AbstractProject project)
internal void StartPushingToWorkspaceAndNotifyOfOpenDocuments(IEnumerable<AbstractProject> projects)
{
foreach (var hostState in _workspaceHosts)
using (Dispatcher.CurrentDispatcher.DisableProcessing())
{
hostState.StartPushingToWorkspaceAndNotifyOfOpenDocuments(projects);
foreach (var hostState in _workspaceHosts)
{
hostState.StartPushingToWorkspaceAndNotifyOfOpenDocuments(projects);
}
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册