Выполнение метода в отдельном потоке без 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();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д