我正在开发PCL
。此MQTT
的目标是注册推送通知通道,并启动与服务器的PCL
连接。问题是Polly
必须能够检测瞬态连接故障并通过退避重试。为此,我找到了一个名为PCL
的库。 Init
有一个静态方法(Windows Universal 8.1 app
),我OnLaunched
从UI Thread
方法调用它。我希望PCL不会阻止ConfigureAwait(false)
。我无法在OnLaunched
方法中使用UI Thread
,因为只有UI
才能访问与之相关的元素Polly
。我认为当前UI Thread
异步实现阻止PCL
用这个假设实现我的PCL库的正确方法是什么?是否有Polly
除 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
}
以外的重试Purose的库?
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;
}
{{1}}