From 0fe8e038af7f33eae824bba263e7c54dea829679 Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Mon, 29 Nov 2021 11:26:25 +0300 Subject: =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20?= =?UTF-8?q?=D0=BA=D1=8D=D1=88=D0=B8=D0=BD=D0=B3=20=D1=80=D0=B5=D0=B7=D1=83?= =?UTF-8?q?=D0=BB=D1=8C=D1=82=D0=B0=D1=82=D0=BE=D0=B2=20=D0=B7=D0=B0=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D1=81=D0=B0,=20=D0=B8=D0=BD=D1=82=D0=B5=D1=80?= =?UTF-8?q?=D1=84=D0=B5=D0=B9=D1=81=20IProduct?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Functions.cs | 46 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 10 deletions(-) (limited to 'Functions.cs') diff --git a/Functions.cs b/Functions.cs index aefdd87..9d3eb28 100644 --- a/Functions.cs +++ b/Functions.cs @@ -1,27 +1,53 @@ using ExcelDna.Integration; +using System.Runtime.Caching; using System.Net.Http; namespace Rehau.Sku.Assist { public class Functions : IExcelAddIn { - static readonly HttpClient httpClient = new HttpClient(); + private static HttpClient _httpClient; + private static ObjectCache _resultCache = MemoryCache.Default; - public static object RAUNAME(string request) + public void AutoClose() { - return ExcelAsyncUtil.Run("RAUNAME", request, delegate - { - var document = SkuAssist.GetDocumentAsync(request, httpClient).Result; - return SkuAssist.GetResultFromDocument(document); - }); } - - public void AutoClose() + public void AutoOpen() { + _httpClient = new HttpClient(); } - public void AutoOpen() + [ExcelFunction] + public static object RAUNAME(string request) { + string cachedResult = _resultCache[request] as string; + + if (cachedResult != null) + { + return cachedResult; + } + + else + { + object result = ExcelAsyncUtil.Run("RAUNAME", null, + delegate + { + var document = SkuAssist.GetDocumentAsync(request, _httpClient).Result; + var product = SkuAssist.GetProductFromDocument(document); + return product.ToString(); + }); + + if (result.Equals(ExcelError.ExcelErrorNA)) + { + return "Загрузка..."; + } + + else + { + _resultCache.Add(request, result, System.DateTime.Now.AddMinutes(20)); + return result.ToString(); + } + } } } } \ No newline at end of file -- cgit v1.2.3