/// <summary> /// Loads and gets UImage using defined parameters. /// IMPORTANT: It throws image loading exceptions - you should handle them /// </summary> /// <returns>The PImage async.</returns> /// <param name="parameters">Parameters.</param> public static Task <NSImage> AsNSImageAsync(this TaskParameter parameters) { var target = new NSImageTarget(); var userErrorCallback = parameters.OnError; var finishCallback = parameters.OnFinish; var tcs = new TaskCompletionSource <NSImage>(); parameters .Error(ex => { tcs.TrySetException(ex); userErrorCallback?.Invoke(ex); }) .Finish(scheduledWork => { finishCallback?.Invoke(scheduledWork); tcs.TrySetResult(target.PImage); }); if (parameters.Source != ImageSource.Stream && string.IsNullOrWhiteSpace(parameters.Path)) { target.SetAsEmpty(null); parameters.TryDispose(); return(null); } var task = ImageService.CreateTask(parameters, target); ImageService.Instance.LoadImage(task); return(tcs.Task); }
/// <summary> /// Preloads the image request into memory cache/disk cache for future use. /// IMPORTANT: It throws image loading exceptions - you should handle them /// </summary> /// <param name="parameters">Image parameters.</param> public static Task PreloadAsync(this TaskParameter parameters) { var tcs = new TaskCompletionSource <IScheduledWork>(); if (parameters.Priority == null) { parameters.WithPriority(LoadingPriority.Low); } parameters.Preload = true; var task = ImageService.CreateTask(parameters); var userErrorCallback = parameters.OnError; var finishCallback = parameters.OnFinish; parameters .Error(ex => { tcs.TrySetException(ex); userErrorCallback?.Invoke(ex); }) .Finish(scheduledWork => { finishCallback?.Invoke(scheduledWork); tcs.TrySetResult(scheduledWork); }); ImageService.Instance.LoadImage(task); return(tcs.Task); }
public static Task <WriteableBitmap> AsWriteableBitmapAsync(this TaskParameter parameters) { BitmapTarget target = new BitmapTarget(); Action <Exception> userErrorCallback = parameters.OnError; Action <IScheduledWork> finishCallback = parameters.OnFinish; TaskCompletionSource <WriteableBitmap> tcs = new TaskCompletionSource <WriteableBitmap>(); parameters.Error(delegate(Exception ex) { tcs.TrySetException(ex); userErrorCallback?.Invoke(ex); }).Finish(delegate(IScheduledWork scheduledWork) { finishCallback?.Invoke(scheduledWork); tcs.TrySetResult(target.BitmapSource as WriteableBitmap); }); if (parameters.Source != ImageSource.Stream && string.IsNullOrWhiteSpace(parameters.Path)) { target.SetAsEmpty(null); parameters.TryDispose(); return(null); } IImageLoaderTask task = ImageService.CreateTask(parameters, target); ImageService.Instance.LoadImage(task); return(tcs.Task); }
public static Task PreloadAsync(this TaskParameter parameters) { TaskCompletionSource <IScheduledWork> tcs = new TaskCompletionSource <IScheduledWork>(); if (!parameters.Priority.HasValue) { parameters.WithPriority(LoadingPriority.Low); } parameters.Preload = true; IImageLoaderTask task = ImageService.CreateTask(parameters); Action <Exception> userErrorCallback = parameters.OnError; Action <IScheduledWork> finishCallback = parameters.OnFinish; parameters.Error(delegate(Exception ex) { tcs.TrySetException(ex); userErrorCallback?.Invoke(ex); }).Finish(delegate(IScheduledWork scheduledWork) { finishCallback?.Invoke(scheduledWork); tcs.TrySetResult(scheduledWork); }); ImageService.Instance.LoadImage(task); return(tcs.Task); }
/// <summary> /// Invalidate the image corresponding to given parameters from given caches. /// </summary> /// <param name="parameters">Image parameters.</param> /// <param name="cacheType">Cache type.</param> public static async Task InvalidateAsync(this TaskParameter parameters, CacheType cacheType) { using (var task = ImageService.CreateTask(parameters)) { var key = task.Key; await ImageService.Instance.InvalidateCacheEntryAsync(key, cacheType).ConfigureAwait(false); } }
public static async Task InvalidateAsync(this TaskParameter parameters, CacheType cacheType) { using (IImageLoaderTask task = ImageService.CreateTask(parameters)) { string key = task.Key; await ImageService.Instance.InvalidateCacheEntryAsync(key, cacheType).ConfigureAwait(continueOnCapturedContext: false); } }
public static IImageLoaderTask Preload(this TaskParameter parameters) { if (!parameters.Priority.HasValue) { parameters.WithPriority(LoadingPriority.Low); } parameters.Preload = true; IImageLoaderTask imageLoaderTask = ImageService.CreateTask(parameters); ImageService.Instance.LoadImage(imageLoaderTask); return(imageLoaderTask); }
/// <summary> /// Preloads the image request into memory cache/disk cache for future use. /// </summary> /// <param name="parameters">Image parameters.</param> public static IImageLoaderTask Preload(this TaskParameter parameters) { if (parameters.Priority == null) { parameters.WithPriority(LoadingPriority.Low); } parameters.Preload = true; var task = ImageService.CreateTask(parameters); ImageService.Instance.LoadImage(task); return(task); }
public static IScheduledWork Into <TImageView>(this TaskParameter parameters, ITarget <BitmapSource, TImageView> target) where TImageView : class { if (parameters.Source != ImageSource.Stream && string.IsNullOrWhiteSpace(parameters.Path)) { target.SetAsEmpty(null); parameters.TryDispose(); return(null); } IImageLoaderTask imageLoaderTask = ImageService.CreateTask(parameters, target); ImageService.Instance.LoadImage(imageLoaderTask); return(imageLoaderTask); }
/// <summary> /// Loads the image into given ImageViewAsync using defined parameters. /// </summary> /// <param name="parameters">Parameters for loading the image.</param> /// <param name="imageView">Image view that should receive the image.</param> public static IScheduledWork Into(this TaskParameter parameters, ImageViewAsync imageView) { var target = new ImageViewTarget(imageView); if (parameters.Source != ImageSource.Stream && string.IsNullOrWhiteSpace(parameters.Path)) { target.SetAsEmpty(null); parameters.TryDispose(); return(null); } var task = ImageService.CreateTask(parameters, target); ImageService.Instance.LoadImage(task); return(task); }