@@ -46,8 +46,7 @@ public sealed class GitHubPaneViewModel : ViewModelBase, IGitHubPaneViewModel, I
4646 readonly ReactiveCommand < Unit > refresh ;
4747 readonly ReactiveCommand < Unit > showPullRequests ;
4848 readonly ReactiveCommand < object > openInBrowser ;
49- readonly SemaphoreSlim initializing = new SemaphoreSlim ( 1 ) ;
50- bool initialized ;
49+ Task initializeTask ;
5150 IViewModel content ;
5251 ILocalRepositoryModel localRepository ;
5352 string searchQuery ;
@@ -198,39 +197,9 @@ public void Dispose()
198197 }
199198
200199 /// <inheritdoc/>
201- public async Task InitializeAsync ( IServiceProvider paneServiceProvider )
200+ public Task InitializeAsync ( IServiceProvider paneServiceProvider )
202201 {
203- await initializing . WaitAsync ( ) ;
204- if ( initialized ) return ;
205-
206- try
207- {
208- await UpdateContent ( teamExplorerContext . ActiveRepository ) ;
209- teamExplorerContext . WhenAnyValue ( x => x . ActiveRepository )
210- . Skip ( 1 )
211- . ObserveOn ( RxApp . MainThreadScheduler )
212- . Subscribe ( x => UpdateContent ( x ) . Forget ( ) ) ;
213-
214- connectionManager . Connections . CollectionChanged += ( _ , __ ) => UpdateContent ( LocalRepository ) . Forget ( ) ;
215-
216- BindNavigatorCommand ( paneServiceProvider , PkgCmdIDList . pullRequestCommand , showPullRequests ) ;
217- BindNavigatorCommand ( paneServiceProvider , PkgCmdIDList . backCommand , navigator . NavigateBack ) ;
218- BindNavigatorCommand ( paneServiceProvider , PkgCmdIDList . forwardCommand , navigator . NavigateForward ) ;
219- BindNavigatorCommand ( paneServiceProvider , PkgCmdIDList . refreshCommand , refresh ) ;
220- BindNavigatorCommand ( paneServiceProvider , PkgCmdIDList . githubCommand , openInBrowser ) ;
221-
222- paneServiceProvider . AddCommandHandler ( Guids . guidGitHubToolbarCmdSet , PkgCmdIDList . helpCommand ,
223- ( _ , __ ) =>
224- {
225- browser . OpenUrl ( new Uri ( GitHubUrls . Documentation ) ) ;
226- usageTracker . IncrementCounter ( x => x . NumberOfGitHubPaneHelpClicks ) . Forget ( ) ;
227- } ) ;
228- }
229- finally
230- {
231- initialized = true ;
232- initializing . Release ( ) ;
233- }
202+ return initializeTask = initializeTask ?? CreateInitializeTask ( paneServiceProvider ) ;
234203 }
235204
236205 /// <inheritdoc/>
@@ -304,6 +273,30 @@ public Task ShowPullRequest(string owner, string repo, int number)
304273 x => x . RemoteRepositoryOwner == owner && x . LocalRepository . Name == repo && x . Number == number ) ;
305274 }
306275
276+ async Task CreateInitializeTask ( IServiceProvider paneServiceProvider )
277+ {
278+ await UpdateContent ( teamExplorerContext . ActiveRepository ) ;
279+ teamExplorerContext . WhenAnyValue ( x => x . ActiveRepository )
280+ . Skip ( 1 )
281+ . ObserveOn ( RxApp . MainThreadScheduler )
282+ . Subscribe ( x => UpdateContent ( x ) . Forget ( ) ) ;
283+
284+ connectionManager . Connections . CollectionChanged += ( _ , __ ) => UpdateContent ( LocalRepository ) . Forget ( ) ;
285+
286+ BindNavigatorCommand ( paneServiceProvider , PkgCmdIDList . pullRequestCommand , showPullRequests ) ;
287+ BindNavigatorCommand ( paneServiceProvider , PkgCmdIDList . backCommand , navigator . NavigateBack ) ;
288+ BindNavigatorCommand ( paneServiceProvider , PkgCmdIDList . forwardCommand , navigator . NavigateForward ) ;
289+ BindNavigatorCommand ( paneServiceProvider , PkgCmdIDList . refreshCommand , refresh ) ;
290+ BindNavigatorCommand ( paneServiceProvider , PkgCmdIDList . githubCommand , openInBrowser ) ;
291+
292+ paneServiceProvider . AddCommandHandler ( Guids . guidGitHubToolbarCmdSet , PkgCmdIDList . helpCommand ,
293+ ( _ , __ ) =>
294+ {
295+ browser . OpenUrl ( new Uri ( GitHubUrls . Documentation ) ) ;
296+ usageTracker . IncrementCounter ( x => x . NumberOfGitHubPaneHelpClicks ) . Forget ( ) ;
297+ } ) ;
298+ }
299+
307300 OleMenuCommand BindNavigatorCommand < T > ( IServiceProvider paneServiceProvider , int commandId , ReactiveCommand < T > command )
308301 {
309302 Guard . ArgumentNotNull ( paneServiceProvider , nameof ( paneServiceProvider ) ) ;
0 commit comments