/// <summary> /// Asynchronously loads a composition from an arbitrary input stream. /// </summary> public static Task <LottieComposition> FromInputStreamAsync(Context context, System.IO.Stream stream, CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { return(Task.FromCanceled <LottieComposition>(cancellationToken)); } var tcs = new TaskCompletionSource <LottieComposition>(); var cancelable = LottieComposition.FromInputStream(context, stream, (composition) => { cancellationToken.ThrowIfCancellationRequested(); tcs.SetResult(composition); }); cancellationToken.Register(() => { if (!tcs.Task.IsCompleted) { cancelable.Cancel(); tcs.TrySetCanceled(cancellationToken); } }); return(tcs.Task); }
/// <summary> /// Asynchronously loads a composition from an arbitrary input stream. /// </summary> public static LottieComposition.ICancellable FromInputStream(Context context, System.IO.Stream stream, Action <LottieComposition> onLoaded) { return(LottieComposition.FromInputStream(context, stream, new ActionCompositionLoaded(onLoaded))); }