private async Task CreateMoleAsync()

in WhackAMole.UWPClient/Models/WhackSpace.cs [258:299]


        private async Task<MoleControl> CreateMoleAsync(KubePod pod)
        {
            try
            {
                MoleControl moleControl = null;
                await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {


                    moleControl = new MoleControl();
                    _molemap.Add(pod.Name, moleControl);
                    moleControl.MoleName = pod.Name;
                    moleControl.Height = moleControl.Width = MOLE_SIZE;
                    var init = _movementEngine.InitializeMole(MOLE_SPEED);
                    var vm = new MoleViewModel(init.Item1, init.Item2, _moleService, _adminService) { CurrentChar = "-", MoleName = pod.Name, Phase = pod.Phase };
                    moleControl.DataContext = vm;
                    Moles.Add(vm);
                    var property = nameof(vm.DisplayAlignment);
                    Binding binding = new Binding() { Path = new PropertyPath(property) };
                    moleControl.SetBinding(MoleControl.DisplayAlignmentProperty, binding);

                    moleControl.Init(_width, _height);
                    moleControl.MoleTapped += async (s, e) =>
                    {
                        Debug.WriteLine($"MOLE TAPPED {e.MoleName}");
                        await DeletePodAsync(e.Mole);
                        _lastKill = DateTime.Now;
                    };

                    _molepen.Children.Add(moleControl);
                });

                await _semaphore.WaitAsync();
                Debug.WriteLine($"+++Create mole {pod.Name}");
                return moleControl;
            }
            finally
            {
                _semaphore.Release();
            }

        }