@@ -164,14 +164,14 @@ public IFuture<T> Canceled(Action action)
164164 if ( IsCancelled )
165165 {
166166 if ( LogLevel . IsActive ( DebugLevel . Log ) )
167- Debug . Log ( $ "[ImageLoader] Future[id={ Id } ] Canceled\n { Url } ") ;
167+ Debug . Log ( $ "[ImageLoader] Future[id={ Id } ] Canceled. Status= { Status } \n { Url } ") ;
168168 Safe . Run ( action , LogLevel ) ;
169169 return this ;
170170 }
171171 if ( cleared )
172172 {
173173 if ( LogLevel . IsActive ( DebugLevel . Warning ) )
174- Debug . LogWarning ( $ "[ImageLoader] Future[id={ Id } ] Canceled event is not set because Future is cleared\n { Url } ") ;
174+ Debug . LogWarning ( $ "[ImageLoader] Future[id={ Id } ] Canceled event is not set because Future is cleared. Status= { Status } \n { Url } ") ;
175175 return this ;
176176 }
177177 OnCanceled += action ;
@@ -186,19 +186,19 @@ public virtual void Cancel()
186186 if ( IsLoaded )
187187 {
188188 if ( LogLevel . IsActive ( DebugLevel . Warning ) )
189- Debug . LogWarning ( $ "[ImageLoader] Future[id={ Id } ] Can't cancel. Task is already loaded\n { Url } ") ;
189+ Debug . LogWarning ( $ "[ImageLoader] Future[id={ Id } ] Can't cancel. Task is already loaded. Status= { Status } \n { Url } ") ;
190190 return ;
191191 }
192192 if ( IsCancelled )
193193 {
194194 if ( LogLevel . IsActive ( DebugLevel . Warning ) )
195- Debug . LogWarning ( $ "[ImageLoader] Future[id={ Id } ] Can't cancel. Task is already canceled\n { Url } ") ;
195+ Debug . LogWarning ( $ "[ImageLoader] Future[id={ Id } ] Can't cancel. Task is already canceled. Status= { Status } \n { Url } ") ;
196196 return ;
197197 }
198198 if ( cleared )
199199 {
200200 if ( LogLevel . IsActive ( DebugLevel . Warning ) )
201- Debug . LogWarning ( $ "[ImageLoader] Future[id={ Id } ] Can't cancel. Task is already cleared\n { Url } ") ;
201+ Debug . LogWarning ( $ "[ImageLoader] Future[id={ Id } ] Can't cancel. Task is already cleared. Status= { Status } \n { Url } ") ;
202202 return ;
203203 }
204204 if ( LogLevel . IsActive ( DebugLevel . Log ) )
@@ -224,18 +224,18 @@ public IFuture<Reference<T>> AsReference(DebugLevel logLevel = DebugLevel.Trace)
224224
225225 LoadedFromMemoryCache ( obj =>
226226 {
227- if ( weakReference . TryGetTarget ( out var reference ) )
228- reference . Loaded ( new Reference < T > ( url , obj ) , FutureLoadedFrom . MemoryCache ) ;
227+ if ( weakReference . TryGetTarget ( out var future ) )
228+ future . Loaded ( new Reference < T > ( url , obj ) , FutureLoadedFrom . MemoryCache ) ;
229229 } ) ;
230230 LoadingFromDiskCache ( ( ) =>
231231 {
232- if ( weakReference . TryGetTarget ( out var reference ) )
233- reference . Loading ( FutureLoadingFrom . DiskCache ) ;
232+ if ( weakReference . TryGetTarget ( out var future ) )
233+ future . Loading ( FutureLoadingFrom . DiskCache ) ;
234234 } ) ;
235235 LoadedFromDiskCache ( obj =>
236236 {
237- if ( weakReference . TryGetTarget ( out var reference ) )
238- reference . Loaded ( new Reference < T > ( url , obj ) , FutureLoadedFrom . DiskCache ) ;
237+ if ( weakReference . TryGetTarget ( out var future ) )
238+ future . Loaded ( new Reference < T > ( url , obj ) , FutureLoadedFrom . DiskCache ) ;
239239 } ) ;
240240 LoadingFromSource ( ( ) =>
241241 {
@@ -244,18 +244,21 @@ public IFuture<Reference<T>> AsReference(DebugLevel logLevel = DebugLevel.Trace)
244244 } ) ;
245245 LoadedFromSource ( obj =>
246246 {
247- if ( weakReference . TryGetTarget ( out var reference ) )
248- reference . Loaded ( new Reference < T > ( url , obj ) , FutureLoadedFrom . Source ) ;
247+ if ( weakReference . TryGetTarget ( out var future ) )
248+ future . Loaded ( new Reference < T > ( url , obj ) , FutureLoadedFrom . Source ) ;
249249 } ) ;
250250 Failed ( e =>
251251 {
252- if ( weakReference . TryGetTarget ( out var reference ) )
253- reference . FailToLoad ( e ) ;
252+ if ( weakReference . TryGetTarget ( out var future ) )
253+ future . FailToLoad ( e ) ;
254254 } ) ;
255255 Canceled ( ( ) =>
256256 {
257- if ( weakReference . TryGetTarget ( out var reference ) )
258- reference . Cancel ( ) ;
257+ if ( weakReference . TryGetTarget ( out var future ) )
258+ {
259+ if ( future . Status != FutureStatus . Disposed && ! future . IsCompleted && ! future . IsCancelled )
260+ future . Cancel ( ) ;
261+ }
259262 } ) ;
260263
261264 // ┌─────────┬────────────────────────────────────────────────────────────────────────┐
0 commit comments