Skip to content

Commit

Permalink
Integrate AsyncHelper
Browse files Browse the repository at this point in the history
  • Loading branch information
jeroenmaes committed Aug 29, 2019
1 parent fe8eb88 commit 50a700c
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 4 deletions.
40 changes: 40 additions & 0 deletions src/log4net.MicrosoftTeams/AsyncHelper.cs
Original file line number Diff line number Diff line change
@@ -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<TResult>(Func<Task<TResult>> 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<Task> func)
{
var cultureUi = CultureInfo.CurrentUICulture;
var culture = CultureInfo.CurrentCulture;
_myTaskFactory.StartNew(() =>
{
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = cultureUi;
return func();
}).Unwrap().GetAwaiter().GetResult();
}
}
}
2 changes: 1 addition & 1 deletion src/log4net.MicrosoftTeams/MicrosoftTeamsClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public void PostMessage(string formattedMessage, Dictionary<string, string> 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();
}

Expand Down
11 changes: 8 additions & 3 deletions src/log4net.MicrosoftTeams/log4net.MicrosoftTeams.csproj
Original file line number Diff line number Diff line change
@@ -1,18 +1,23 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetFrameworks>netstandard2.0;net461</TargetFrameworks>
<PackageProjectUrl>https://github.com/jeroenmaes/log4net.MicrosoftTeams</PackageProjectUrl>
<Description>A log4net appender that writes to Microsoft Teams.</Description>
<Version>1.1.2</Version>
<Version>1.1.3</Version>
<PackageLicenseUrl>https://github.com/jeroenmaes/log4net.MicrosoftTeams/blob/master/LICENSE</PackageLicenseUrl>
<Copyright>Copyright © Jeroen Maes 2019</Copyright>
<PackageTags>log4net;MicrosoftTeams;appender</PackageTags>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="log4net" Version="2.0.8" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
</ItemGroup>

<ItemGroup Condition=" '$(TargetFramework)' == 'net461' ">
<Reference Include="System.Net.Http" />
</ItemGroup>

</Project>

0 comments on commit 50a700c

Please sign in to comment.