From 5130a35b0d320a824da3b3be39ea79cfd0c29abb Mon Sep 17 00:00:00 2001 From: Rene Evertz Date: Wed, 30 Oct 2024 12:02:42 +0100 Subject: [PATCH] Async senden aller Antworten --- DakotaSender/Program.cs | 15 ++++++++++---- Shared/AppSender/AppRequestSender.cs | 30 ++++++++++++++++++++++++++++ Shared/AppSender/GkvSender.cs | 5 +++-- 3 files changed, 44 insertions(+), 6 deletions(-) diff --git a/DakotaSender/Program.cs b/DakotaSender/Program.cs index 5fae2b272..3f83a6493 100644 --- a/DakotaSender/Program.cs +++ b/DakotaSender/Program.cs @@ -310,23 +310,30 @@ namespace DakotaSender req.ResultDCs.Add(item); } - static void HandleResults() + static async Task HandleResults() { + // var tasks = new List(); foreach (var tenant in ten2user2req.Keys) { foreach (var user in ten2user2req[tenant].Keys) { var req = ten2user2req[tenant][user]; - HandleResult(req, tenant, user); + var task = HandleResult(req, tenant, user); + + task.Start(); + + // tasks.Add(task); } } + + // await Task.WhenAll(tasks); } - static void HandleResult(GkvClientResultRequestDC req, string tenant, long user) + static async Task HandleResult(GkvClientResultRequestDC req, string tenant, long user) { try { - var res = GkvSender.SendKundenAppClientRequest(req, tenant); + var res = await GkvSender.SendKundenAppClientRequestAsync(req, tenant); if (res.Success) return; diff --git a/Shared/AppSender/AppRequestSender.cs b/Shared/AppSender/AppRequestSender.cs index 5448b5dba..08dfd7999 100644 --- a/Shared/AppSender/AppRequestSender.cs +++ b/Shared/AppSender/AppRequestSender.cs @@ -52,6 +52,20 @@ namespace BS.Shared.AppSender return JsonConvert.DeserializeObject(response_app8_str); } + public static async Task SendAsync(Req request, string url, string tenant) where Req : AppRequestDC where Res : AppResponseDC + { + request.Tenant = tenant; + + var data = JsonConvert.SerializeObject(request); + + var response_app8_str = await SendAsync(url, data, tenant); + + if (string.IsNullOrEmpty(response_app8_str)) + return null; + + return JsonConvert.DeserializeObject(response_app8_str); + } + private static string Send(string url, string dataString, string tenant) { string response_app8_str; @@ -67,5 +81,21 @@ namespace BS.Shared.AppSender return response_app8_str; } + + private static async Task SendAsync(string url, string dataString, string tenant) + { + string response; + + url += "?tenant=" + tenant; + + using (WebClient client = new WebClient()) + { + client.Headers.Add(HttpRequestHeader.ContentType, "application/json"); + + response = await client.UploadStringTaskAsync(url, "POST", dataString); + } + + return response; + } } } diff --git a/Shared/AppSender/GkvSender.cs b/Shared/AppSender/GkvSender.cs index 66c605fb6..375412e8e 100644 --- a/Shared/AppSender/GkvSender.cs +++ b/Shared/AppSender/GkvSender.cs @@ -4,6 +4,7 @@ using BS.Shared.Exceptions; using Newtonsoft.Json; using System; using System.Net; +using System.Threading.Tasks; namespace BS.Shared.AppSender { @@ -59,7 +60,7 @@ namespace BS.Shared.AppSender return app8_response; } - public static Res SendKundenAppClientRequest(Req request, string tenant) where Req : AppRequestDC where Res : AppResponseDC + public static async Task SendKundenAppClientRequestAsync(Req request, string tenant) where Req : AppRequestDC where Res : AppResponseDC { string server = AppRequestSender.GetServerFromTenant(tenant); @@ -77,7 +78,7 @@ namespace BS.Shared.AppSender try { - app8_response = AppRequestSender.Send(request, url, tenant); + app8_response = await AppRequestSender.SendAsync(request, url, tenant); } catch (Exception e) {