예제 #1
0
        private void UpdateTiles()
        {
            var tileXML = TileService.CreateTile(WeatherForecast.GetForecast());
            var updater = TileUpdateManager.CreateTileUpdaterForApplication();
            TileNotification notification = new TileNotification(tileXML);

            updater.Update(notification);
        }
        public async Task <WeatherForecast> Get(CancellationToken cancellationToken)
        {
            var timespan    = TimeSpan.FromMilliseconds(250);
            var retryPolicy = Polly.Policy
                              .Handle <Polly.Timeout.TimeoutRejectedException>()
                              .RetryAsync(2, (exception, i, ctx) =>
            {
                Console.WriteLine($"OnRetry: {i}");
                Console.WriteLine($"message: {exception.Message}");
                Console.WriteLine($"correlationId: {ctx.CorrelationId}");
                Console.WriteLine($"operationKey: {ctx.OperationKey}");
                Console.WriteLine($"policyKey: {ctx.PolicyKey}");
                Console.WriteLine(ctx.Keys);
                Console.WriteLine("");
            });

            var timeoutPolicy = Polly.Policy.TimeoutAsync(timespan, TimeoutStrategy.Optimistic);

            // Create retries, each with the defined timeout
            var execPolicy = Polly.Policy.WrapAsync(retryPolicy, timeoutPolicy);

            // Create timeout for all retries
            // var execPolicy = Polly.Policy.WrapAsync(timeoutPolicy, retryPolicy);


            try
            {
                var res = await execPolicy.ExecuteAsync((ct) => WeatherForecast.GetForecast(1, ct),
                                                        cancellationToken);

                return(res);
            }
            catch (Polly.Timeout.TimeoutRejectedException tex)
            {
                Console.Error.WriteLine("Timeout exception!!");
                Console.Error.WriteLine(tex.Message);
                return(null);
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine(ex.GetType());
                return(null);
            }
        }