@@ -114,8 +114,8 @@ public void Reload(bool saveCfg = false)
114114 }
115115
116116 Engines = BaseSearchEngine . GetAllSearchEngines ( )
117- . Where ( e => Config . SearchEngines . HasFlag ( e . EngineOption ) )
118- . ToArray ( ) ;
117+ . Where ( e => Config . SearchEngines . HasFlag ( e . EngineOption ) )
118+ . ToArray ( ) ;
119119
120120 Trace . WriteLine ( $ "{ nameof ( SearchClient ) } : Config:\n { Config } ", C_DEBUG ) ;
121121
@@ -146,27 +146,25 @@ public void Reset()
146146 /// <summary>
147147 /// Performs an image search asynchronously.
148148 /// </summary>
149- public async Task RunSearchAsync ( CancellationToken ? cts = null )
149+ public async Task RunSearchAsync ( CancellationToken cts , CancellationTokenSource cts2 )
150150 {
151151 if ( IsComplete ) {
152152 Reset ( ) ;
153153 }
154154
155155
156- cts ??= CancellationToken . None ;
157-
158156 Tasks = new List < Task < SearchResult > > ( Engines . Select ( engine =>
159157 {
160- var task = engine . GetResultAsync ( Config . Query , cts . Value ) ;
158+ var task = engine . GetResultAsync ( Config . Query , cts ) ;
161159
162160 return task ;
163161 } ) ) ;
164162
165163
166- while ( ! IsComplete && ! cts . Value . IsCancellationRequested ) {
164+ while ( ! IsComplete && ! cts . IsCancellationRequested ) {
167165 var finished = await Task . WhenAny ( Tasks ) ;
168166
169- var task = finished . ContinueWith ( GetResultContinueCallback , null , cts . Value ,
167+ var task = finished . ContinueWith ( GetResultContinueCallback , state : cts2 , cts ,
170168 0 , TaskScheduler . Default ) ;
171169
172170 ContinueTasks . Add ( task ) ;
@@ -232,14 +230,13 @@ public async Task RunSearchAsync(CancellationToken? cts = null)
232230 SearchCompleted ? . Invoke ( null , args ) ;
233231 }
234232
235- public async Task RunContinueAsync ( CancellationToken ? c = null )
233+ public async Task RunContinueAsync ( CancellationToken c )
236234 {
237235
238236 IsContinueComplete = false ;
239237
240- c ??= CancellationToken . None ;
241238
242- while ( ! IsContinueComplete && ! c . Value . IsCancellationRequested ) {
239+ while ( ! IsContinueComplete && ! c . IsCancellationRequested ) {
243240 var task = await Task . WhenAny ( ContinueTasks ) ;
244241 await task ;
245242
@@ -260,7 +257,8 @@ private void GetResultContinueCallback(Task<SearchResult> task, object state)
260257 return ;
261258 }
262259
263- var result = value . GetBinaryImageResults ( ) ;
260+ var cts = ( CancellationTokenSource ) state ;
261+ var result = value . GetBinaryImageResults ( cts ) ;
264262
265263 if ( result . Any ( ) ) {
266264
@@ -274,7 +272,7 @@ private void GetResultContinueCallback(Task<SearchResult> task, object state)
274272 if ( DirectResultsWaitHandle . TrySetResult ( ) ) {
275273 Debug . WriteLine ( "wait handle set" ) ;
276274
277-
275+
278276 }
279277
280278 }
@@ -287,32 +285,6 @@ private void GetResultContinueCallback(Task<SearchResult> task, object state)
287285 }
288286 }
289287
290- /// <summary>
291- /// Refines search results by searching with the most-detailed result (<see cref="FindDirectResults" />).
292- /// </summary>
293- public async Task RefineSearchAsync ( )
294- {
295- if ( ! IsComplete ) {
296- throw SearchException ;
297- }
298-
299- var directResult = DirectResults . FirstOrDefault ( ) ;
300-
301- if ( directResult == null ) {
302- throw new SmartImageException ( "Could not find direct result" ) ;
303- }
304-
305- var direct = directResult . DirectImage . Url ;
306-
307- Debug . WriteLine ( $ "{ nameof ( SearchClient ) } : Refining by { direct } ", C_DEBUG ) ;
308-
309- Config . Query = direct ;
310-
311- Reset ( ) ;
312-
313- await RunSearchAsync ( ) ;
314- }
315-
316288 public static List < ImageResult > ApplyPredicateFilter ( List < SearchResult > results , Predicate < SearchResult > predicate )
317289 {
318290 var query = results . Where ( r => predicate ( r ) )
@@ -325,22 +297,6 @@ public static List<ImageResult> ApplyPredicateFilter(List<SearchResult> results,
325297 return query ;
326298 }
327299
328- /// <summary>
329- /// Maximizes search results by using the specified property selector.
330- /// </summary>
331- /// <returns><see cref="Results" /> ordered by <paramref name="property" /></returns>
332- public List < SearchResult > MaximizeResults < T > ( Func < SearchResult , T > property )
333- {
334- if ( ! IsComplete ) {
335- throw SearchException ;
336- }
337-
338- var res = Results . OrderByDescending ( property ) . ToList ( ) ;
339-
340- res . RemoveAll ( r => ! r . IsNonPrimitive ) ;
341-
342- return res ;
343- }
344300
345301 /// <summary>
346302 /// Fires when <see cref="GetResultContinueCallback"/> returns
0 commit comments