Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 05.07.2012
Сообщений: 4
1
.NET 4.x

При нажатии кнопки запускается бесконечный цикл, и окно программы подвисает

05.07.2012, 12:56. Показов 2683. Ответов 4
Метки нет (Все метки)

При нажатии кнопки запускается бесконечный цикл, по мере прохождения цикла, нужно, чтобы он выводил сообщения в ListBox. Ниже привел код, что нужно исправить, чтобы заработало. В моем случае, при нажатии кнопки, окно программы зависает, пока не прекратит работать цикл.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
 
       
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            while (true)
            {
                
                this.ListBox1.Items.Add("Текст");
                Thread.Sleep(1000);
                
            } 
        }
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.07.2012, 12:56
Ответы с готовыми решениями:

Бесконечный цикл с выходом при нажатии клавиши
Как это реализовать?

Как сделать бесконечный цикл при нажатии на кнопку
Я пробовал написать об этом в топике https://www.cyberforum.ru/windows-forms/thread1551941.html, но...

Можно ли создать бесконечный цикл, из которого выходит при нажатии любой клавиши?
Можно ли создать бесконечный цикл, из которого выходит при нажатии любой клавиши на клавиатуре?...

При нажатии кнопки пуск ПК запускается и тут же выключается, после этого он запускается сам
При нажатии кнопки пуск ПК запускается и тут же выключается, после этого через пару секунд он...

4
1232 / 1042 / 293
Регистрация: 07.03.2012
Сообщений: 3,245
05.07.2012, 13:17 2
ну у вас же Thread.Sleep(1000) стоит. Вы говорите основному потоку чтобы он подвис на секунду и так продолжается бесконечно. Используйте BackgroundWorker к примеру, или уберите Thread.sleep
0
0 / 0 / 0
Регистрация: 05.07.2012
Сообщений: 4
05.07.2012, 13:40  [ТС] 3
Дело в том, что даже если я убираю Thread.Sleep, окно программы все равно висит, я его перетащить даже не могу. Пока как по видимому полностью не исполниться цикл. А так как он бесконечный, то подвисает и больше ничего не происходит. И в ListBox ничего не выводится
0
1232 / 1042 / 293
Регистрация: 07.03.2012
Сообщений: 3,245
05.07.2012, 13:47 4
видимо, не успевает отобразиться, потому и виснет
0
1 / 1 / 0
Регистрация: 21.03.2012
Сообщений: 33
05.07.2012, 13:50 5
Как уже написал Монфрид используйте BackgroundWorker, примерно так:
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
private void Button_Click(object sender, RoutedEventArgs e)
{
while (true)
{
backgroundWorker1.RunWorkerAsync();
} 
}
 
private void OnDoWork(object sender, DoWorkEventArgs e)
        {SetText(label1,"Текст"}
 
delegate void OnTextChange(Label labelForChange, string moreText);
        void SetText(Label labelForChange, string moreText)
        {
            if (labelForChange.InvokeRequired)
            {
                OnTextChange tsDelegate = SetText;
                labelForChange.Invoke(tsDelegate, new object[] { labelForChange, moreText });
            }
            else
            {
                label1.Text = moreText;
            }
        }
Не забудь OnDoWork подключить к backgroundWorker1.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.07.2012, 13:50

Открыть новое окно при нажатии кнопки
Вот есть у меня начальное окно. На котором у меня есть кнопка, у которой есть слушатель public...

Как очистить окно при нажатии кнопки?
Как при нажатии этой (фото) кнопки, очистить окно и вывести что - то другое?

Не открывается окно при нажатии кнопки в tkinter
Добрый день! Подскажите, пожалуйста, мне необходимо сделать окно с кнопками, при нажатии на них:...

Компьютер запускается автоматически при включении в сеть или при нажатии кнопки фильтра
Привет всем! Подскажите что делать? Купил новый системник и вот такая проблема. Запускается...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.