@@ -82,7 +82,9 @@ protected override void Initialize()
82
82
// Using JoinableTaskFactory from parent AsyncPackage. That way if VS shuts down before this
83
83
// work is done, we won't risk crashing due to arbitrary work going on in background threads.
84
84
var asyncPackage = ( AsyncPackage ) Package ;
85
- viewModelTask = asyncPackage . JoinableTaskFactory . RunAsync ( ( ) => InitializeAsync ( asyncPackage ) ) ;
85
+ JoinableTaskFactory = asyncPackage . JoinableTaskFactory ;
86
+
87
+ viewModelTask = JoinableTaskFactory . RunAsync ( ( ) => InitializeAsync ( asyncPackage ) ) ;
86
88
}
87
89
88
90
public Task < IGitHubPaneViewModel > GetViewModelAsync ( ) => viewModelTask . JoinAsync ( ) ;
@@ -123,7 +125,7 @@ public override IVsSearchTask CreateSearch(uint dwCookie, IVsSearchQuery pSearch
123
125
124
126
if ( pane != null )
125
127
{
126
- return new SearchTask ( pane , dwCookie , pSearchQuery , pSearchCallback ) ;
128
+ return new SearchTask ( JoinableTaskFactory , pane , dwCookie , pSearchQuery , pSearchCallback ) ;
127
129
}
128
130
129
131
return null ;
@@ -189,23 +191,29 @@ void UpdateSearchHost(bool enabled, string query)
189
191
190
192
class SearchTask : VsSearchTask
191
193
{
194
+ readonly JoinableTaskFactory joinableTaskFactory ;
192
195
readonly IGitHubPaneViewModel viewModel ;
193
196
194
197
public SearchTask (
198
+ JoinableTaskFactory joinableTaskFactory ,
195
199
IGitHubPaneViewModel viewModel ,
196
200
uint dwCookie ,
197
201
IVsSearchQuery pSearchQuery ,
198
202
IVsSearchCallback pSearchCallback )
199
203
: base ( dwCookie , pSearchQuery , pSearchCallback )
200
204
{
205
+ this . joinableTaskFactory = joinableTaskFactory ;
201
206
this . viewModel = viewModel ;
202
207
}
203
208
204
209
protected override void OnStartSearch ( )
205
210
{
206
- ThreadHelper . ThrowIfNotOnUIThread ( ) ;
211
+ joinableTaskFactory . RunAsync ( async ( ) =>
212
+ {
213
+ await joinableTaskFactory . SwitchToMainThreadAsync ( ) ;
214
+ viewModel . SearchQuery = SearchQuery . SearchString ;
215
+ } ) ;
207
216
208
- viewModel . SearchQuery = SearchQuery . SearchString ;
209
217
base . OnStartSearch ( ) ;
210
218
}
211
219
@@ -224,5 +232,7 @@ public SearchQuery(string query)
224
232
225
233
public uint GetTokens ( uint dwMaxTokens , IVsSearchToken [ ] rgpSearchTokens ) => 0 ;
226
234
}
235
+
236
+ public JoinableTaskFactory JoinableTaskFactory { get ; private set ; }
227
237
}
228
238
}
0 commit comments