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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2015, 18:33   #1
bibiw_one
Пользователь
 
Регистрация: 25.10.2015
Сообщений: 10
Вопрос C# Баг окно нельзя двигать при быстром рисовании

Программа на C#, рисующая круг в разных местах быстро, при запуске рисования не позволяет двигать окно, если его свернуть, то нельзя развернуть обратно. С чем это может быть связано?
Как происходит рисование:
Код:
while (true)
            {
                Graphics g = Graphics.FromHwnd(pictureBox1.Handle);
                g.DrawEllipse(new Pen(Color.Red, 5), 50 + x, 50 + y, 10, 10);
                System.Threading.Thread.Sleep(5);
                g.DrawEllipse(new Pen(Color.White, 5), 50 + x, 50 + y, 10, 10);
            }
C++, .Net
bibiw_one вне форума Ответить с цитированием
Старый 28.10.2015, 18:35   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

UI поток занят этим циклом вот и не дает.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 29.10.2015, 11:29   #3
bibiw_one
Пользователь
 
Регистрация: 25.10.2015
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
UI поток занят этим циклом вот и не дает.
А задержки в 5 мс не хватает для обработки события передвижения?
C++, .Net
bibiw_one вне форума Ответить с цитированием
Старый 29.10.2015, 11:32   #4
bibiw_one
Пользователь
 
Регистрация: 25.10.2015
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
UI поток занят этим циклом вот и не дает.
А, я понял, кажется задержка полностью поток останавливает..
C++, .Net
bibiw_one вне форума Ответить с цитированием
Старый 29.10.2015, 11:54   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Причем тут задержка, пока вы не выйдете из этого цикла (ну точнее из всего метода и т.п. где он находится) UI поток не может продолжить обрабатывать сообщения (я про очередь сообщений https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx), соответственно реакции на действия пользователя не будет.

Поэтому обычно все долгие действия (например загрузка файла из интернета) выполняют в отдельном потоке, а не в UI потоке.
Ну или еще в классе Application есть метод ДуИвентс, но обычно это не самое лучшее решение.

Вообще код странный, зачем вам рисовать одно и то же в бесконечном цикле?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 29.10.2015 в 18:52.
Alex11223 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка PHP при быстром клике. matrixphp PHP 3 05.04.2012 22:44
Искажение координат при рисовании многоугольника на канве temeah Общие вопросы Delphi 4 03.01.2012 01:24
Delphi. Задержка при рисовании viron Помощь студентам 1 18.12.2011 12:00
Убрать рамку при рисовании в MS WORD badfilin Microsoft Office Word 2 08.01.2010 12:41
В Image Transparen = true - тормоза при рисовании lexaltd Мультимедиа в Delphi 0 28.09.2008 16:03