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 シェルで UI スレッドをブロックしていました (特にソース管理操作で)。

ソース管理操作を非同期にすることは、Visual Studio 2012 の設計目標の 1 つでした - http://blogs.msdn.com/b/bharry/archive/2011/09/01/wrapping-up-tfs-11-version-control改良.aspx

于 2013-07-01T23:37:38.043 に答える