我正在开发一个protable class library(PCL)
. 这样做的目的PCL
是注册推送通知通道并启动MQTT
与服务器的连接。问题是PCL
必须能够检测到瞬态连接故障并通过退避重试。我找到了一个Polly
为此目的而调用的库。PCL
有一个静态方法(Init
),我从方法中Windows Universal 8.1 app
调用它。OnLaunched
我希望 PCL 不会阻止UI Thread
. 我不能使用ConfigureAwait(false)
inOnLaunched
方法,因为只能UI Thread
访问与 . 相关的元素UI
。我认为当前Polly
的异步实现块UI Thread
用这个假设实现我的 PCL 库的正确方法是什么?是否有用于重试 Purose 的库PCL
except Polly
?
应用程序.xaml.xs
protected override async void OnLaunched(LaunchActivatedEventArgs e)
{
// some code
await Notifier.Init(some parameters);
// if I use ConfigureAwait(false) I see exceptions in rest of method
// some code
}
PCL.cs
public sealed class Notifier
{
public static async Task<bool> Init(some parameters)
{
Policy policy = Policy.Handle<NullReferenceException>().WaitAndRetryAsync(5,
retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)), (exception,timeSpan) =>
{
Debug.WriteLine(exception);
Debug.WriteLine(timeSpan);
});
policy.ExecuteAsync(() => instance.OpenChannelAndUploadAsync(instance.ServerUrl));
await instance.InitiateMqtt();
return true;
}