Beispiel #1
0
        public async Task GetThumbnailSource(ItemModel item)
        {
            await Task.Run(() =>
            {
                var requestId = _imageMgr.RequestImageForAsset(
                    _asset,
                    new CoreGraphics.CGSize(256, 256),
                    PHImageContentMode.AspectFill, new PHImageRequestOptions(),
                    async(img, info) =>
                {
                    if (img?.Size != null)         // && (img.Size.Width >= 256 || img.Size.Height >= 256))
                    {
                        await Task.Run(() =>
                        {
                            var imgSource    = ImageSource.FromStream(img.AsPNG().AsStream);
                            item.ThumbSource = imgSource;
                        }).ConfigureAwait(false);
                    }
                }
                    );

                Console.WriteLine($"ID: {requestId}");

                _requestsQueue.Enqueue(requestId);

                if (_requestsQueue.Count > 40)
                {
                    var oldRequestId = (int)_requestsQueue.Dequeue();

                    var t = Task.Run(() => { _imageMgr.CancelImageRequest(oldRequestId); });
                }
            }).ConfigureAwait(false);
        }