private void eraseImage(GameObjectImage gmObjImg)
 {
     if (canvas.Children.Contains(gmObjImg.displayImage))
     {
         canvas.Children.Remove(gmObjImg.displayImage);
     }
 }
        private void GmObjImg_canDispose(object sender, EventArgs e)
        {
            GameObjectImage gmObjImg = sender as GameObjectImage, tmp;

            while (!display.TryRemove(gmObjImg.gmObj, out tmp))
            {
                ;
            }
            //display.Remove(gmObjImg.gmObj);
        }
        //private Task displayImage()
        //{
        //    List<Task> tasks = new List<Task>();
        //    foreach (GameObject gmObj in exist.iterate())
        //    {
        //    GameObjectImage gmObjImg;
        //        if (display.TryGetValue(gmObj, out gmObjImg))
        //        {
        //            gmObjImg = display[gmObj];
        //            Task task = Task.Run(async () =>
        //            {
        //                await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High, () =>
        //                {
        //                    gmObjImg.animate();
        //                });
        //            });
        //            tasks.Add(task);
        //        }
        //        else
        //        {
        //            Task task = Task.Run(async () =>
        //            {

        //                await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High, () =>
        //                {
        //                    Image img;
        //                    img = new Image();
        //                    canvas.Children.Add(img);
        //                    gmObjImg = new GameObjectImage(canvas, gmObj, img);
        //                    bool isSafe = display.TryAdd(gmObj, gmObjImg);
        //                    if (false)
        //                    {
        //                        throw new Exception();
        //                    }


        //                    //display[gmObj] = gmObjImg;
        //                });
        //            });
        //            tasks.Add(task);
        //        }
        //    }
        //    foreach (GameObject gmObj in dying.iterate())
        //    {

        //        GameObjectImage gmObjImg = display[gmObj];

        //        Task task = Task.Run(async () =>
        //        {
        //            await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High, () =>
        //            {
        //                gmObjImg.dying();
        //            });
        //        });
        //        tasks.Add(task);

        //    }
        //    return Task.WhenAll(tasks);
        //}

        private Task displayImage()
        {
            Task task = Task.Run(async() =>
            {
                await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High, () =>
                {
                    this.keyholder.Focus(FocusState.Keyboard);
                    //Existcount.Text = Existence.getInstance().count.ToString();
                    //Dyingcount.Text = DyingExistence.getInstance().count.ToString();
                    //player.Text = display.Count.ToString();
                    scoreNum.Text = stage.score.ToString();

                    foreach (GameObject gmObj in exist.iterate())
                    {
                        GameObjectImage gmObjImg;
                        if (display.TryGetValue(gmObj, out gmObjImg))
                        {
                            gmObjImg.animate();
                        }
                        else
                        {
                            Image img;
                            img = new Image();
                            canvas.Children.Add(img);
                            gmObjImg             = new GameObjectImage(canvas, gmObj, img);
                            gmObjImg.canDispose += GmObjImg_canDispose;
                            bool isSafe          = display.TryAdd(gmObj, gmObjImg);
                            //display.Add(gmObj, gmObjImg);
                            if (false)
                            {
                                throw new Exception();
                            }
                        }
                    }
                    foreach (GameObject gmObj in dying.iterate())
                    {
                        GameObjectImage gmObjImg;
                        if (display.TryGetValue(gmObj, out gmObjImg))
                        {
                            gmObjImg.dying();
                        }
                    }
                });
            });

            task.Wait();
            return(task);
        }