закрытие формы вместе с потоком 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());
вызов функции как и выше, работает как швейцарские часы монтана. теперь можно форму загрузки закостомизаировать как душе угодно