コード例 #1
0
    /// <summary>
    /// 异步加载图片
    /// </summary>
    public async Task <Exception> LoadImageAsync()
    {
        // client

        var net = CurrentMoeItem.Site.GetCloneNet(CurrentMoeItem.ThumbnailUrlInfo.Referer, 30d);

        net.ProgressMessageHandler.HttpReceiveProgress += ProgressMessageHandlerOnHttpReceiveProgress;
        Exception loadEx = null;

        try
        {
            Cts?.Cancel();
            Cts = new CancellationTokenSource(TimeSpan.FromSeconds(30));
            var response = await net.Client.GetAsync(CurrentMoeItem.Urls.GetPreview().Url, Cts.Token);

            await using Stream stream = await response.Content.ReadAsStreamAsync();

            BitmapImage Func()
            {
                return(UiUtility.GetBitmapImageFromStream(stream));
            }
            var source = await Task.Run(Func, Cts.Token);

            if (source != null)
            {
                PreviewBitmapImage = source;
                SetImage(source);
            }
        }
        catch (Exception ex)
        {
            loadEx = ex;
        }

        if (loadEx == null)
        {
            //this.Sb("LoadedImageSb").Begin();
        }
        else
        {
            //this.Sb("LoadFailSb").Begin();
            Ex.Log(loadEx.Message, loadEx.StackTrace);
            Ex.Log($"{CurrentMoeItem.ThumbnailUrlInfo.Url} 图片加载失败");
        }

        return(loadEx);
    }