Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2012, 20:14   #1
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию Асинхронная загрузка и блокирование главного потока

Доброго времени суток Уважаемые специалисты. Собственно вопрос заключается в следующим. Некоторые данные на форме загружаются с интернета и соответственно занимают некоторое время на загрузку. Это время пока грузятся данные естественно главный поток весит. Я сделал следующее, запустил поток и в потоке пытаюсь грузить все необходимые данные.

Код:
Thread _Thread = new Thread(new ThreadStart(TImageLoad));
_Thread.Start();
Код:
void TImageLoad()
{
this.Dispatcher.BeginInvoke(new Action(() =>
 {
  //Здесь происходит загрузка все данных
  foreach (MyObject myObj in ObjectList)
  {
   //...
  }
 }),  DispatcherPriority.Background);
}
В диспатчере вроде как указал фоновый поток, главная форма появляется сразу после запуска , но к сожалению весит.

Цитата:
BackgroundWorker Пробовал
ThreadPool.QueueUserWorkItem - Пробовал
Все собственно так же
Читал про паттерн MVVM но он еще пока не для моих мозгов или мне просто лень этот механизм пережевать. Хз, что-то из двух.

Последний раз редактировалось coNsept; 24.11.2012 в 20:19.
coNsept вне форума Ответить с цитированием
Старый 24.11.2012, 21:58   #2
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

так попробуй
Код:
foreach (MyObject myObj in ObjectList)
{
 Dispatcher.BeginInvoke(new ThreadStart(delegate {
//...
}));
}
или так
Код:
Dispatcher.BeginInvoke(new ThreadStart(delegate {
foreach (MyObject myObj in ObjectList)
{
   //...
}
}));
Olejik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Асинхронная загрузка скриптов ekvador JavaScript, Ajax 0 27.01.2012 15:12
Должно быть 3 потока. А диспетчер задач показывает, что потока создано 2 BEL9ILLI Общие вопросы Delphi 3 06.12.2011 20:26
Асинхронная загрузка Julitan JavaScript, Ajax 2 18.08.2011 16:32
Загрузка иконки из потока altar Общие вопросы C/C++ 6 02.02.2011 14:01
Загрузка изображения из потока Joe_Tribbiani Общие вопросы Delphi 1 22.04.2009 03:07