Выполнение метода в отдельном потоке без await/async - C#
Формулировка задачи:
В Пытался по разному, но как ни крути прогресс баг не появляется, наверно блочиться UI-поток(((
К примеру в работает, но как то некрасиво получается с эстетической точки зрения. Как то можно это громоздкое выражение заменить более аккуратным?
десктопном WPF проекте с .Net 4.0
необходимо сделать так:private void updateNowButton_Click(object sender, RoutedEventArgs e)
{
ProgressBar1_IsIndeterminateUpdate.Visibility = Visibility.Visible;
//здесь вызываем метод длительного решения задачи
ProgressBar1_IsIndeterminateUpdate.Visibility = Visibility.Collapsed;
}Windows Phone 8.1 приложении с .Net 4.5
я делал так и оно там работало.
Нашел ответ, получилось вот так:
private void startBar_Click(object sender, RoutedEventArgs e)
{
ProgressBar1.Visibility = Visibility.Visible;
Task<Boolean>.Factory.StartNew(() =>
{
getMethod("all");
Thread.Sleep(5 * 1000);
return true;
}).ContinueWith(t =>
{
if (t.Result)
{
//метод отработал
ProgressBar1.Visibility = Visibility.Collapsed;
}
}, TaskScheduler.FromCurrentSynchronizationContext());
//ProgressBar1.Visibility = Visibility.Collapsed;
}Решение задачи: «Выполнение метода в отдельном потоке без await/async»
textual
Листинг программы
//Capture the thread thread = Thread.CurrentThread; //потом //Cancel the task by aborting the thread thread.Abort();