Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
1 / 1 / 0
Регистрация: 31.01.2013
Сообщений: 37

Thread.Sleep(): не видны визуальные изменения на форме между слипами

06.12.2013, 22:32. Показов 1487. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема: не вижу смену цвета ячеек, а по логике должны меняться каждые 5 секунд(столько выполняется, или вернее спит, метод, а потом переходит к следующему). Форма просто виснет на 15 секунд.

Вопрос: Как увидеть смену цвета ячеек, пока выполняются методы? чтобы форма не висла, пока выполняются метода содержащие слип.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public void test()
{
    //Thread.Sleep(5000);
    Thread.CurrentThread.Join(5000);
}
 
foo[0] = test;
foo[1] = test;
foo[2] = test;
int i = 0;
 
foreach (MyDelegate f in foo)
{
    if (f != null)
    {
        listView1.Items[i].BackColor = Color.Aqua;
        if (i > 0) listView1.Items[i - 1].BackColor = Color.White;
        i++;
        try
        {
            f()
        }
        catch (Exception) { break; }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.12.2013, 22:32
Ответы с готовыми решениями:

Разница между Thread.Sleep и await Task.Delay
Здравствуйте! Плохо понимаю разницу между использованием: Thread.Sleep(1000); //Здесь код после задержки и ...

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

Thread.sleep()
Вообщем, проблемма вот в чем. Я пытаюсь заставить "заснуть" программу, в результате - она засыпает, но сразу выводит все данные. ...

4
Заблокирован
07.12.2013, 15:02
Для этого сущесвуют потоки Thread или класс backgroundworker
0
Заблокирован
07.12.2013, 16:54
Контролы на форме нужно изменять в отдельном потоке, а вызывать слип - в том же самом.
Вот пример.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System.Threading; // это в самый верх, перед строчкой с namespace
...
void ThreadStart()
{
    for (int i = 1; i <= 10; i++)
    {
        button1.Invoke((MethodInvoker)(() => 
        {
            button1.Text = i.ToString();
        }));
        Thread.Sleep(500);
    }
}
 
private void button1_Click(object sender, EventArgs e)
{
    new Thread(ThreadStart).Start();
}
1
1 / 1 / 0
Регистрация: 31.01.2013
Сообщений: 37
08.12.2013, 17:59  [ТС]
Цитата Сообщение от Водяной Змей Посмотреть сообщение
Контролы на форме нужно изменять в отдельном потоке, а вызывать слип - в том же самом.
Вот пример.
C#
1
2
3
4
        button1.Invoke((MethodInvoker)(() => 
        {
            button1.Text = i.ToString();
        }));
а есть разница: писать button1.Invoke() или просто Invoke()? просто я не заметил


и неудобно каждый кусок кода отвечающий за обращение к форме заключать в такой вот блок...
0
Заблокирован
08.12.2013, 18:26
а есть разница: писать button1.Invoke() или просто Invoke()?
Просто Invoke - это метод формы. То есть this.Invoke()
Вообще-то он даже лучше, т.к. позволяет обеспечить доступ из потока сразу ко всем элементам формы, а не только к button1.

и неудобно каждый кусок кода отвечающий за обращение к форме заключать в такой вот блок...
В этот блок нельзя помещать только Thread.Sleep() и иные функции которые не должны вызываться с таким же приоритетом, с каким и работа с интерфейсом формы.
Всё остальное помещается в этот блок без проблем.
И конечно, в нём не обязана быть только одна строчка, как в моём примере.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.12.2013, 18:26
Помогаю со студенческими работами здесь

Thread.Sleep
Итак, есть примерно вот такой консольный код: static void Main(string args) { int i = 0; Menu(i); ...

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

Не работает Thread.Sleep();
Не работает задержка. Вернее она работает, но сначала программа делает задержку, а затем отображает текст. if (Data.pin == pin_vvod) ...

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

ProgressBar и Thread.Sleep
Задание: 1 . Создание Windows приложения, которое демонстрирует асинхронную работу в фоновом режиме. Написать метод , выполнение...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru