@@ -82,7 +82,9 @@ protected override void Initialize()
8282 // Using JoinableTaskFactory from parent AsyncPackage. That way if VS shuts down before this
8383 // work is done, we won't risk crashing due to arbitrary work going on in background threads.
8484 var asyncPackage = ( AsyncPackage ) Package ;
85- viewModelTask = asyncPackage . JoinableTaskFactory . RunAsync ( ( ) => InitializeAsync ( asyncPackage ) ) ;
85+ JoinableTaskFactory = asyncPackage . JoinableTaskFactory ;
86+
87+ viewModelTask = JoinableTaskFactory . RunAsync ( ( ) => InitializeAsync ( asyncPackage ) ) ;
8688 }
8789
8890 public Task < IGitHubPaneViewModel > GetViewModelAsync ( ) => viewModelTask . JoinAsync ( ) ;
@@ -123,7 +125,7 @@ public override IVsSearchTask CreateSearch(uint dwCookie, IVsSearchQuery pSearch
123125
124126 if ( pane != null )
125127 {
126- return new SearchTask ( pane , dwCookie , pSearchQuery , pSearchCallback ) ;
128+ return new SearchTask ( JoinableTaskFactory , pane , dwCookie , pSearchQuery , pSearchCallback ) ;
127129 }
128130
129131 return null ;
@@ -189,23 +191,29 @@ void UpdateSearchHost(bool enabled, string query)
189191
190192 class SearchTask : VsSearchTask
191193 {
194+ readonly JoinableTaskFactory joinableTaskFactory ;
192195 readonly IGitHubPaneViewModel viewModel ;
193196
194197 public SearchTask (
198+ JoinableTaskFactory joinableTaskFactory ,
195199 IGitHubPaneViewModel viewModel ,
196200 uint dwCookie ,
197201 IVsSearchQuery pSearchQuery ,
198202 IVsSearchCallback pSearchCallback )
199203 : base ( dwCookie , pSearchQuery , pSearchCallback )
200204 {
205+ this . joinableTaskFactory = joinableTaskFactory ;
201206 this . viewModel = viewModel ;
202207 }
203208
204209 protected override void OnStartSearch ( )
205210 {
206- ThreadHelper . ThrowIfNotOnUIThread ( ) ;
211+ joinableTaskFactory . RunAsync ( async ( ) =>
212+ {
213+ await joinableTaskFactory . SwitchToMainThreadAsync ( ) ;
214+ viewModel . SearchQuery = SearchQuery . SearchString ;
215+ } ) ;
207216
208- viewModel . SearchQuery = SearchQuery . SearchString ;
209217 base . OnStartSearch ( ) ;
210218 }
211219
@@ -224,5 +232,7 @@ public SearchQuery(string query)
224232
225233 public uint GetTokens ( uint dwMaxTokens , IVsSearchToken [ ] rgpSearchTokens ) => 0 ;
226234 }
235+
236+ public JoinableTaskFactory JoinableTaskFactory { get ; private set ; }
227237 }
228238}
0 commit comments