using System.Threading;
using System.Threading.Tasks;
using System.Windows.Media;
namespace OrderSupportTicket.Services;
///
/// 商品缩略图加载器,限制并发下载数量,避免工单列表同时发起大量请求。
///
internal static class ProductImageLoader
{
private static readonly SemaphoreSlim Gate = new SemaphoreSlim(4, 4);
public static async Task LoadAsync(string url)
{
if (string.IsNullOrWhiteSpace(url))
return null;
await Gate.WaitAsync().ConfigureAwait(false);
try
{
return await Task.Run(
() => AllBase.ImageBuild.LoadBitmipImageFromUrl(url.Trim()))
.ConfigureAwait(false);
}
catch
{
return null;
}
finally
{
Gate.Release();
}
}
}