private Task <string> GetObjectAsync(ActorId objectId, CancellationToken cancellationToken)
        {
            IVisualObjectActor actorProxy = ActorProxy.Create <IVisualObjectActor>(objectId, this.serviceUri);

            try
            {
                return(actorProxy.GetStateAsJsonAsync());
            }
            catch (Exception)
            {
                // ignore the exceptions
                return(Task.FromResult(String.Empty));
            }
        }
        protected override Task RunAsync(CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();
            List <Task> runners = new List <Task>();

            foreach (ActorId id in this.actorIds)
            {
                IVisualObjectActor actorProxy = ActorProxy.Create <IVisualObjectActor>(id, this.ActorServiceUri);

                Task t = Task.Run(
                    async() =>
                {
                    while (true)
                    {
                        cancellationToken.ThrowIfCancellationRequested();

                        try
                        {
                            this.objectBox.SetObjectString(id, await actorProxy.GetStateAsJsonAsync());
                        }
                        catch (Exception)
                        {
                            // ignore the exceptions
                            this.objectBox.SetObjectString(id, string.Empty);
                        }
                        finally
                        {
                            this.objectBox.computeJson();
                        }

                        await Task.Delay(TimeSpan.FromMilliseconds(10));
                    }
                }
                    ,
                    cancellationToken);

                runners.Add(t);
            }

            return(Task.WhenAll(runners));
        }