Возврат выдвигающийся панели

Столкнулся с проблемой в асинхронах, не могу возвратить панель назад, после её "выдвижения". Снизу виднеется попытка сделать возврат, но ничего не получается. Панели наложены друг на друга. За первичный код - спасибо Ивану Рудакову. Читаю документацию уже 2 час (очень продуктивно). Ценю любую помощь.

 public async void Animation_Async()
    {
        
        await Task.Run(() => { 
           
            int Height = panel2.Size.Height; 

            while (panelanimatoin.Size.Height <= Height) 
            {
                Task.Delay(1); 
                Invoke(new Action(() => { panelanimatoin.Size = new Size(panelanimatoin.Width, panelanimatoin.Size.Height + 1);
                }));
                Invoke(new Action(() => {                    
                    bool moveRight = true;
                    panelanimatoin.Left += moveRight ? 1 : -1;
                    if (panelanimatoin.Left > 500) moveRight = false;
                }));                                                          
            }               
        });          
    }
    public void panel_animatoin_Hover(object sender, EventArgs e)
    {
        Animation_Async();
    }

Ответы (0 шт):