закрытие формы вместе с потоком C#

нужно при флаге true закрывать поток и форму ( на форме loadform простая анимация ) в данный момент флаги все отрабатывают, но форма остается активной. код прикладываю, может кто сталкивался с подобным

 private async void Animate(bool t)
    {
        loadform loadform = new loadform();
        var cts = new CancellationTokenSource();
        var token = cts.Token;

        await Task.Run(() =>
        {
                if (t == false)
                {
                    loadform.ShowDialog();
                    cts.Cancel();
                    
                }

                if (t == true)
                {
                    this.Invoke((MethodInvoker)delegate ()
                    {
                        loadform.Close();
                    });                    
                }
        }, token);       
    }

вызывается данная функция таким образом

        Animate(false);
        Очень_долго_выполняющаяся_функция_для_неё_и_нужна_анимация_загрузки(this);
        Animate(true);

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

Автор решения: Виктор Юхимчук
Control.CheckForIllegalCrossThreadCalls = false;
        Task.Factory.StartNew(() =>
        {
            if (t == false)
            {
                loadform.ShowDialog();

            }
        }).ContinueWith(task =>
        {

            if (t == true)
            {
                loadform.Close();
            }
        }, TaskScheduler.FromCurrentSynchronizationContext());

вызов функции как и выше, работает как швейцарские часы монтана. теперь можно форму загрузки закостомизаировать как душе угодно

→ Ссылка