Example #1
0
        public static Image End(IAsyncResult result)
        {
            AsyncLoadImageResult loadImageResult = ThrowHelper.DownCast <AsyncLoadImageResult>(result, "result");

            loadImageResult.WaitForCallbackComplete();
            loadImageResult.SetCompleted(loadImageResult.Closure.Error);
            loadImageResult.CheckPendingException();
            return(loadImageResult.Closure);
        }
Example #2
0
        public static IAsyncResult Begin(ImageLoad load, IntPtr p, Session session, ImageSize size,
                                         AsyncCallback userCallback, object state)
        {
            AsyncLoadImageResult result = new AsyncLoadImageResult(userCallback, state);
            Image image = new Image(LibSpotify.sp_image_create_r(session.Handle, load(p, size)));

            result.Closure = image;
            image.Loaded  += result.HandleImageLoaded;

            // It's possible the image loaded before we registered the result.HandleImageLoaded
            if (image.IsLoaded)
            {
                result.CompletedSynchronously = true;
                result.SetCompleted(image.Error);
            }

            return(result);
        }