4

当我尝试在 TFS 或使用 TFS 的项目中执行大多数操作时,例如将文件添加到项目中,主界面会冻结。

我查看了调用堆栈,在检查项目是否处于活动状态时,它似乎处于死锁状态。

我曾尝试下载一份全新的代码副本,但这并没有帮助。

我正在使用安装了 SP1 的 VS2010。

这是刷新我的挂起更改后冻结时主线程的调用堆栈的顶部

ntdll.dll!_ZwWaitForSingleObject@12()  + 0x15 bytes
ntdll.dll!_ZwWaitForSingleObject@12()  + 0x15 bytes
Tfsprovider.dll!NVseeFC::CCriticalSection::Lock()  + 0x1d bytes
Tfsprovider.dll!CSccManager::fIsSolutionFolderProject()  + 0x3b bytes
Tfsprovider.dll!CSccManager::IsActive()  + 0x153 bytes
Tfsprovider.dll!CVsSccUI::Exec_icmdSccRefreshStatus()  + 0xbd bytes
Tfsprovider.dll!CVsCommandTargetMap<CVsSccUI,IOleCommandTarget>::Exec()  + 0x6a bytes
Tfsprovider.dll!CVsCommandTarget<NVseePkgsVssProvider::CGridBarDialog,IxNull>::Exec()  + 0x26 bytes
Tfsprovider.dll!CVsSccPackage::Exec()  + 0xa9 bytes
Tfsprovider.dll!CVsSccHatHelper::RefreshStatus()  + 0x3c bytes
[Managed to Native Transition]
Microsoft.VisualStudio.TeamFoundation.VersionControl.dll!Microsoft.VisualStudio.TeamFoundation.VersionControl.VssProvider.RefreshStatus() + 0x35 bytes
Microsoft.VisualStudio.TeamFoundation.VersionControl.dll!Microsoft.VisualStudio.TeamFoundation.VersionControl.ToolWindowPendingCheckinsForm.Microsoft.TeamFoundation.VersionControl.Controls.IPendingCheckinHost.RefreshPendingCheckins() + 0x69 bytes
Microsoft.TeamFoundation.VersionControl.Controls.dll!Microsoft.TeamFoundation.VersionControl.Controls.PendingCheckinsChannelControl.OnRefreshPendingCheckins() + 0x3d bytes
Microsoft.TeamFoundation.VersionControl.Controls.dll!Microsoft.TeamFoundation.VersionControl.Controls.PendingCheckinsChannelControl.RefreshSelectedChannel() + 0x22 bytes
Microsoft.VisualStudio.TeamFoundation.VersionControl.dll!Microsoft.VisualStudio.TeamFoundation.VersionControl.CommandHandlerPendingCheckins.Refresh_Exec(Microsoft.VisualStudio.TeamFoundation.CommandHandler handler, Microsoft.VisualStudio.TeamFoundation.CommandHandler.Command command, int commandId) + 0x13 bytes
(Other calls removed, they don't look relevant)

有没有其他人遇到过这个问题,或者知道解决方法?

更新:界面在等待大约 8 分钟后恢复生机。在此期间,TFS 服务器通过网络向我发送了大约 60,000 个数据包。

更新 2:我通过手动重新创建 SLN 文件解决了这个问题。

4

1 回答 1

3

不幸的是,这种阻塞行为是一个“设计使然”的问题。在 Visual Studio 2010 中,团队资源管理器(和一堆其他 VS 组件)将同步执行许多操作,并在 Visual Studio shell 中阻塞 UI 线程,尤其是在源代码控制操作上。

使源代码控制操作异步是 Visual Studio 2012 的设计目标之一 - http://blogs.msdn.com/b/bharry/archive/2011/09/01/wrapping-up-tfs-11-version-control-改进.aspx

于 2013-07-01T23:37:38.043 回答