19 / 8 / 7
Регистрация: 26.12.2013
Сообщений: 167
1

Когда while проводит проверку условия

04.02.2016, 16:19. Показов 694. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть поток threadX. Когда он завершится, нужно вывести месседж бокс о завершении.
У потоков нет событий. Поэтому делаю (на клике button1)
C#
1
2
3
while (threadX.ThreadState==ThreadState.Running) 
Application.DoEvents();
MessageBox.Show("Complete");
Месседж бокс выскакивает сразу по клику button1

Короче, вопрос: while срабатывает 1 раз за событие?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.02.2016, 16:19
Ответы с готовыми решениями:

Записать условия когда является истинным , когда:
Записать условия когда является истинным , когда: целое N кратно четырем и не оканчивается нулем ...

Сделать проверку условия
Всем хай. Кто может помочь с делфи ? Вот у меня в коде такая строчка :...

Зaдача на проверку условия
http://i040.***********/1102/b3/e94810696b12.jpg Решите пожалуйста г,д. (Натуральные числа...

Как попустить проверку условия IF ?
У меня есть долгий цыкл который сверяет цвета пикселей на экране монитора. procedure...

5
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
04.02.2016, 16:55 2
depravity, Как это нет?
C#
1
2
3
4
5
            new Thread(() =>
                       {
                           Thread.Sleep(TimeSpan.FromSeconds(2));
                           MessageBox.Show("Hello from thread!");
                       }).Start();
0
TheGreatCornholio
1254 / 732 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
04.02.2016, 16:58 3
Цитата Сообщение от depravity Посмотреть сообщение
У потоков нет событий.
Ага, а у переменных нет делегатов.

Используйте лучше Task, ContinueWith, async await и проч.
0
674 / 420 / 44
Регистрация: 09.07.2012
Сообщений: 1,419
04.02.2016, 17:26 4
While ( условие ) { тело цикла } - если условие истинно то выполнить тело цикла, вернутся к проверке условия.

Что бы не делать этого в вашем случае используйте Thread.Join(); Это скажет, текущий поток, подожди пока закончит свою работу другой поток.
0
Администратор
Эксперт .NET
16989 / 13348 / 5209
Регистрация: 17.03.2014
Сообщений: 27,295
Записей в блоге: 1
04.02.2016, 17:42 5
depravity, while работает правильно - проверяет условие перед каждой итерацией цикла. Проблема во ThreadState. Если поток будет что-то ждать или "спать", то ThreadState = WaitSleepJoin. Поэтому лучше проверять на Stopped
C#
1
while (threadX.ThreadState != ThreadState.Stopped) Application.DoEvents();
А еще лучше прислушаться к совету Woldemar89.
0
TheGreatCornholio
1254 / 732 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
04.02.2016, 18:02 6
depravity, тут с 15:00 можно посмотреть про Task - неплохо описано.
http://www.youtube.com/watch?v=5iGsceTRgyc
Но, естественно, лучше посмотреть все части темы "Многопоточность".
Недавно цикл продолжился и 3ю часть выпустили.

Добавлено через 9 минут
Исчо тут почитай.
Как выполняется метод, использующий async и await?
0
04.02.2016, 18:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.02.2016, 18:02
Помогаю со студенческими работами здесь

Задача на проверку условия вместимости
Здравствуйте! Ни как не могу решить задачу! Может кто подскажет?

Сделать проверку условия в foreach
есть select, в нем option выстраиваются из БД. нужно проверить, если в сессии уже есть выбраный...

Условия на проверку режима таблицы
Здравствуйте, есть проблема. Пытаюсь проверить условия включена ли таблица в режиме редактирования...

Условия на проверку отсутствия значения в базе
If IbQuery4=nil or IbQuery4=nil or IbQuery4=nil or IbQuery4=nil or IbQuery4=nil or IbQuery4=nil or...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru