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); }); }
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; } } }