С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
1 / 1 / 0
Регистрация: 03.02.2012
Сообщений: 23

При Thread.Sleep форма не прорисовывается вовремя

02.04.2012, 09:55. Показов 1769. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Изачаю потока на C#, возникла проблема. Сделал простую прогу, в котрой на форме расположен TextBox и кнопка, при нажатии на кнопку в текстбоксе должно появится 1е сообщение, через секунду второе. Вот код:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
namespace WindowsApplication1
{
    public partial class MyThread : Form
    {
        public MyThread()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            textBox1.Text = "Message 1" + "\r\n";
            System.Threading.Thread.Sleep(1000);
            textBox1.Text += "Message 2" + "\r\n";
 
        }
 
    }
}
Проблема в том, что оба сообщения отображаются вместе спустя секунду, т.е. задержка происходит, но оба сообщения отображаются только после слипа. Почему так происходит и как это исправить?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.04.2012, 09:55
Ответы с готовыми решениями:

Не прорисовывается картинка на форме из-за Sleep
public Image setImg() { Image imgArr = new Image; imgArr = WindowsFormsApplication1.Properties.Resources._1; imgArr ...

Как использовать Thread.Sleep(5000), ошибка: "Элемент "Thread" не существует в текущем контексте"
я так понимаю, что Thread.Sleep(5000); это "тормоз" процесса выполенения программы на 5 сек? А как его правильно инициализировать и...

Thread.Sleep и lock
Что будет если вызвать Thread.Sleep() внутри блока кода lock?

2
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
02.04.2012, 11:02
Почему так?
Дело в том что перерисовка формы будет выполнена только после обработки события button1_Click. Thread.Sleep на самом деле не прерывает и не ставит поток на паузу, он просто информирует менеджер потоков, что в такой то период времени процессорное время потоку выделять противопоказано.

Как это исправить?
Принудительно перерисовать компонент. Для этого предназначен метод Refresh(), который надо вызвать перед Sleep.
Пример:
C#
1
2
3
4
5
6
7
void Button1Click(object sender, EventArgs e)
        {
            textBox1.Text="sfddsfdgd";
            textBox1.Refresh();
            System.Threading.Thread.Sleep(1000);
            textBox1.Text="43786597369573469";
        }
1
1 / 1 / 0
Регистрация: 03.02.2012
Сообщений: 23
02.04.2012, 11:47  [ТС]
freeba, спасибо!
Пропробовал тоже самое во вторичном потоке, оказалось Refresh() в нем можно и не вызывать о_О
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.04.2012, 11:47
Помогаю со студенческими работами здесь

Аналог Thread.Sleep
когда вызываешь функцию Вызываю слип в потоке Thread.Sleep(300000) ТО программа начинает криво работать в чем дело ?

Thread.Sleep не работает
Всем привет! Задача такая есть таймер который запускается каждый 30 сек и делает рассылку и уведомление Но когда наступает время (1 мин...

Прервать ожидание Thread.Sleep
Можно ли прервать ожидание Thread.Sleep? У меня сейчас в отдельном потоке выполняется некий код, при нажатии кнопки стоп меняется...

Аналог Thread.Sleep в Task
Имеется пример который запускает пару потоков с задержкой. using System; using System.Collections.Generic; using System.Linq; using...

Странное поведение Thread.Sleep
Забавно, уже не первый раз встречаю такую вещь: делаю движение контрола по форме в цикле (самостоятельно, или по нажатым клавишам). Чтобы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru