Ejemplo n.º 1
0
        public Func <Uri, CancellationToken, Task <byte[]> > CreateGetImageFunc()
        {
            var reTryFunc = CreateReTryFunc <byte[]>();

            var timeOutFunc = CreateTimeOutReTryFunc <byte[]>(m_timeSpan, 9);

            return((uri, tokan) =>
            {
                return reTryFunc((tokan) => timeOutFunc((tokan) => m_imgClient.GetByteArrayAsync(uri, tokan), tokan), tokan);
            });
        }
Ejemplo n.º 2
0
        async Task LoadData(ChannelWriter <DateBind> writer, MHttpClient load, Func <Uri> func)
        {
            async Task AddDate(string html)
            {
                foreach (var item in CreateHtmlPageData(html))
                {
                    try
                    {
                        byte[] buffer = await load.GetByteArrayAsync(item.ImgUri, item.Uri, default).ConfigureAwait(false);

                        await writer.WriteAsync(new DateBind(
                                                    ImageSource.FromStream(() => new MemoryStream(buffer)),
                                                    item.Title,
                                                    item.Uri)).ConfigureAwait(false);
                    }
                    catch (MHttpClientException)
                    {
                    }
                }
            }

            while (true)
            {
                try
                {
                    string html = await load.GetStringAsync(func(), default).ConfigureAwait(false);

                    await AddDate(html).ConfigureAwait(false);
                }
                catch (MHttpClientException)
                {
                }
                catch (ChannelClosedException)
                {
                    return;
                }
            }
        }