Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обновление интерфейса из фонового потока 
:(
    Опции темы
VoyagerEternal
  Дата 9.11.2010, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 22.9.2009

Репутация: нет
Всего: нет



Нужно на сильверлайте сделать фоновую задачу, которая при этом будет обновлять интерфейс.

делаю так:

Код

запускаю поток:
new Thread(() =>
{
     //выполняю фоновую задачу
       
     AutoResetEvent waitHandle = new AutoResetEvent(false);
     Action action = () =>
     {
          //обновляю контрол
          waitHandle.Set();
     };
     dispatcher.BeginInvoke(action); //запускаю action в главном потоке
     waitHandle.WaitOne(); //жду когда выполнится waitHandle.Set();

     //продолжаю выполнение фоновой задачи
}) { IsBackground = true }.Start();


проблема в том, что на строчке waitHandle.WaitOne(); программа виснет, метод action не выполняется

этот же пример, но в WinForms:
Код

private void button1_Click(object sender, EventArgs e)
{
    EventWaitHandle waitHandle = new EventWaitHandle(false, EventResetMode.AutoReset);
    Action action = () =>
    {
        label1.Text = "OK";
        waitHandle.Set();
    };
    Dispatcher.CurrentDispatcher.BeginInvoke(action);
    waitHandle.WaitOne();
}


проблема та же, но в WinForms открыт метод Dispatcher.Invoke, и если вместо BeginInvoke поставить Invoke, то все отлично работает.

А в Silverlight метод Invoke закрыт, и при использовании BeginInvoke прога виснет. Чо делать? 
Как вообще можно на Silverlight сделать фоновую задачу, с обновлением интерфейса?
как сделать ProgressBar например?
PM MAIL   Вверх
KelTron
Дата 9.11.2010, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: 2
Всего: 38



Смотри System.ComponentModel.BackgroundWorker


--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.