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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вызов Form.Resresh() из неосновного потока, что-то не вызывается 
:(
    Опции темы
4ybaka
Дата 1.6.2007, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



есть неск потоков рисовальщиков,кот работают со след функцией:
Код

            while (Position != newPosition) {

                curPos.X += changeX;
                curPos.Y += changeY;
                lock (this)
                {
                    Position = curPos;
                }

                Draw();

                Thread.Sleep(100);


где Draw:
Код

            lock (graph)
            {
                graph.DrawImage(bitmap, Position);
            }
            Interlocked.Increment(ref readyThreads);
            while (readyThreads != 0) {
                Thread.Sleep(20);
            }

и есть поток,кот должен после каждого прохода функций рисовальщиков обновляьт форму:
Код

            while (true) {
                if (readyThreads == -1)
                    return;
                if (readyThreads == totalThreads) {
                    form.BeginInvoke(refresh);//resresh - делегат на Form.Resresh()
                    Interlocked.Exchange(ref readyThreads ,0);
                }
                Thread.Sleep(10);
            }

так вот форма перерисовывается только при окончании работы рисовательных потоков,а не после каждого прохода!(хотя коли уж рисовальщики рисуют дальше,значит form.BeginInvoke(refresh) и Interlocked.Exchange(ref readyThreads ,0) точно вызывались....)разве Form.Refresh() не должен сразу обновить всю форму?


--------------------
"То,что вы понимаете - это все,что вы понимаете."
 Брайн Керниган
PM MAIL WWW   Вверх
SpaceSpace
Дата 1.6.2007, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



легче после каждого прохода рисовальщика напрямую вызывать рефрешь.

может перемудрил ты с потоками?


--------------------
Репутация - самое ценное, что есть у человека. Зарабатывают годы, теряют за мгновение.
70-565
MCPD Enterprise 3.5 
PM MAIL   Вверх
4ybaka
Дата 1.6.2007, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



если после каждого прохода посылать,то будет мерцание,это же не DD,кот с неск поверхностями работает....
Цитата

может перемудрил ты с потоками?

может,но вот только почему же он сразу то не вызывает?ведь сказано же "Forces the control to invalidate its client area and immediately redraw itself and any child controls. "


--------------------
"То,что вы понимаете - это все,что вы понимаете."
 Брайн Керниган
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




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


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

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