public Task <ViewResult> Index2()
        {
            var tcs = new TaskCompletionSource <ViewResult>();

            var client = new ServiceDecorator(new NewsServiceClient());

            var timer = new Stopwatch();

            timer.Start();

            var worldNews = client.GetWorldNewsTaskAsync();
            var sportNews = client.GetSportNewsTaskAsync();
            var funNews   = client.GetFunNewsTaskAsync();

            var allNews = Task.WhenAll(worldNews, sportNews, funNews);

            allNews.ContinueWith(r =>
            {
                IEnumerable <NewsModel> result = new List <NewsModel>();
                result = r.Result.Aggregate(result,
                                            (current, news) => current.Concat(news.Convert()));
                var model = new ViewModel {
                    News = result, Elapsed = timer.Elapsed
                };
                tcs.SetResult(View("Index", model));
                timer.Stop();
            });

            return(tcs.Task);
        }
        public Task<ViewResult> Index2()
        {
            var tcs = new TaskCompletionSource<ViewResult>();

            var client = new ServiceDecorator(new NewsServiceClient());

            var timer = new Stopwatch();
            timer.Start();

            var worldNews = client.GetWorldNewsTaskAsync();
            var sportNews = client.GetSportNewsTaskAsync();
            var funNews = client.GetFunNewsTaskAsync();

            var allNews = Task.WhenAll(worldNews, sportNews, funNews);

            allNews.ContinueWith(r =>
            {
                IEnumerable<NewsModel> result = new List<NewsModel>();
                result = r.Result.Aggregate(result,
                    (current, news) => current.Concat(news.Convert()));
                var model = new ViewModel { News = result, Elapsed = timer.Elapsed };
                tcs.SetResult(View("Index", model));
                timer.Stop();
            });

            return tcs.Task;
        }
Ejemplo n.º 3
0
        protected Task <RequestResult <TResult> > SendApiMethod <TResult>(
            Func <Task <TResult> > apiFunc,
            ApiMethodContext apiContext,
            [CallerMemberName] string callerMethodName = null) where TResult : class
        {
            var context = GetServiceMethodContext(callerMethodName) ?? Context;

            return(ServiceDecorator.SendApiMethod(context, apiFunc, apiContext));
        }
Ejemplo n.º 4
0
        public override void Initialize()
        {
            base.Initialize();
            Mvx.IoCProvider.RegisterType <IContactService, ContactService>();

            var serviceDecorator = new ServiceDecorator();

            ServiceDecorator.AddDefaultFilters(serviceDecorator);

            Mvx.IoCProvider.RegisterSingleton <IServiceDecorator>(serviceDecorator);

            Mvx.IoCProvider.LazyConstructAndRegisterSingleton <IContactProvider, ContactProvider>();

            RegisterAppStart <MainViewModel>();
        }
        public Task<ViewResult> Index3()
        {
            var service = new NewsServiceClient();
            var client = new ServiceDecorator(service);

            var timer = new Stopwatch();
            timer.Start();

            return
                from w in client.GetWorldNewsTaskAsync()
                from s in client.GetSportNewsTaskAsync()
                from f in client.GetFunNewsTaskAsync()
                let all = w.Union(s).Union(f).Convert()
                select View("Index",
                    new ViewModel { News = f.Convert(), Elapsed = timer.Elapsed });
        }
        public Task <ViewResult> Index3()
        {
            var service = new NewsServiceClient();
            var client  = new ServiceDecorator(service);

            var timer = new Stopwatch();

            timer.Start();

            return
                (from w in client.GetWorldNewsTaskAsync()
                 from s in client.GetSportNewsTaskAsync()
                 from f in client.GetFunNewsTaskAsync()
                 let all = w.Union(s).Union(f).Convert()
                           select View("Index",
                                       new ViewModel { News = f.Convert(), Elapsed = timer.Elapsed }));
        }