using CoreGraphics; using ImageIO; namespace Blahblah.Library.Network; public class ImageTask : DownloadTask { CGImageSource? imageSource; public ImageTask(string url, string filePath, bool createImage, TaskCompletionSource> source, CancellationToken token = default) : base(url, filePath, source, token) { if (createImage) { imageSource = CGImageSource.CreateIncremental(null); } } protected override CGImage? Update(float progress) { if (imageSource == null || Data == null) { return null; } imageSource.UpdateData(Data, Data.Length >= (uint)expectedContentLength); return imageSource.CreateImage(0, null!); } protected override void Disposing() { if (imageSource != null) { imageSource.Dispose(); imageSource = null; } base.Disposing(); } }