From 50a700c236afc46f42216eceb29b9e659de2a832 Mon Sep 17 00:00:00 2001 From: Jeroen Maes Date: Thu, 29 Aug 2019 17:47:24 +0200 Subject: [PATCH] Integrate AsyncHelper --- src/log4net.MicrosoftTeams/AsyncHelper.cs | 40 +++++++++++++++++++ .../MicrosoftTeamsClient.cs | 2 +- .../log4net.MicrosoftTeams.csproj | 11 +++-- 3 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 src/log4net.MicrosoftTeams/AsyncHelper.cs diff --git a/src/log4net.MicrosoftTeams/AsyncHelper.cs b/src/log4net.MicrosoftTeams/AsyncHelper.cs new file mode 100644 index 0000000..29f7211 --- /dev/null +++ b/src/log4net.MicrosoftTeams/AsyncHelper.cs @@ -0,0 +1,40 @@ +// Copyright (c) Microsoft Corporation, Inc. All rights reserved. +// Licensed under the MIT License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Globalization; +using System.Threading; +using System.Threading.Tasks; + +namespace log4net.MicrosoftTeams +{ + internal static class AsyncHelper + { + private static readonly TaskFactory _myTaskFactory = new TaskFactory(CancellationToken.None, + TaskCreationOptions.None, TaskContinuationOptions.None, TaskScheduler.Default); + + public static TResult RunSync(Func> func) + { + var cultureUi = CultureInfo.CurrentUICulture; + var culture = CultureInfo.CurrentCulture; + return _myTaskFactory.StartNew(() => + { + Thread.CurrentThread.CurrentCulture = culture; + Thread.CurrentThread.CurrentUICulture = cultureUi; + return func(); + }).Unwrap().GetAwaiter().GetResult(); + } + + public static void RunSync(Func func) + { + var cultureUi = CultureInfo.CurrentUICulture; + var culture = CultureInfo.CurrentCulture; + _myTaskFactory.StartNew(() => + { + Thread.CurrentThread.CurrentCulture = culture; + Thread.CurrentThread.CurrentUICulture = cultureUi; + return func(); + }).Unwrap().GetAwaiter().GetResult(); + } + } +} diff --git a/src/log4net.MicrosoftTeams/MicrosoftTeamsClient.cs b/src/log4net.MicrosoftTeams/MicrosoftTeamsClient.cs index 62900ea..78960a9 100644 --- a/src/log4net.MicrosoftTeams/MicrosoftTeamsClient.cs +++ b/src/log4net.MicrosoftTeams/MicrosoftTeamsClient.cs @@ -22,7 +22,7 @@ public void PostMessage(string formattedMessage, Dictionary fact var message = CreateMessageCard(formattedMessage, facts); var json = JsonConvert.SerializeObject(message); - var response = _client.PostAsync(_uri, new StringContent(json, Encoding.UTF8, "application/json")).Result; + var response = AsyncHelper.RunSync(() => _client.PostAsync(_uri, new StringContent(json, Encoding.UTF8, "application/json"))); response.EnsureSuccessStatusCode(); } diff --git a/src/log4net.MicrosoftTeams/log4net.MicrosoftTeams.csproj b/src/log4net.MicrosoftTeams/log4net.MicrosoftTeams.csproj index 243fbdc..ea77d21 100644 --- a/src/log4net.MicrosoftTeams/log4net.MicrosoftTeams.csproj +++ b/src/log4net.MicrosoftTeams/log4net.MicrosoftTeams.csproj @@ -1,18 +1,23 @@ - + - netstandard2.0 + netstandard2.0;net461 https://github.com/jeroenmaes/log4net.MicrosoftTeams A log4net appender that writes to Microsoft Teams. - 1.1.2 + 1.1.3 https://github.com/jeroenmaes/log4net.MicrosoftTeams/blob/master/LICENSE Copyright © Jeroen Maes 2019 log4net;MicrosoftTeams;appender + true + + + +