Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > проблема с lable


Автор: крылья 19.4.2015, 03:32
ребят такая тема, в общем я создал форму на с++, там сделал кнопку, и по нажатии кнопки у меня секунда 20 будет выполняться метод, после того как он выполнится должно выводиться в lable слово "тик", потом я снова вызываю тот же метод который 20 секунд длиться и уже должно вывести в lable слово "так"..........при запуске он через некоторое время сразу выводит "так" помогите кто знает, что нужно подправить???..вот код:

 private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {


 ppp1(); //метод выполняется 20 секунд
 this->label4->Text = "тик"; //вывести тик
 ppp1(); //метод выполняется 20 секунд
 this->label4->Text = "так"; //вывести так

 }

Автор: victor201538 19.4.2015, 10:02
Модератор: Сообщение скрыто.

Автор: rudolfninja 19.4.2015, 10:25
Я бы предположил, что метод выполняется не 20 секунд, а намного быстрее и вы не успеваете увидеть надпись "тик".
Попробуйте изменить код следующим образом:

Код

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
 Sleep(20000); // приостанавливаем поток на 20 секунд
 this->label4->Text = "тик"; //вывести тик
 Sleep(20000); //приостанавливаем поток на 20 секунд
 this->label4->Text = "так"; //вывести так
 }

Если таким образом все будет работать нормально, то функция ppp1() выполняется совсем не 20 секунд.

Автор: крылья 19.4.2015, 12:07
нет вы ошибаетесь, мой метод выполняется не меньше 20 секунд, это точно, и даже если слипом заделать 20 секунд задержке как у вас, то всё равно не будет работать, сразу конечный результат выдаст)) тут нужно как-то к диспетчеру потока обратиться на обновление окна, на WPF знаю как, но а с++  не могу разобраться!

Автор: rudolfninja 19.4.2015, 17:23
Вообще, судя по коду у вас не c++, а скорее, с#. Потому что в c++ нет типа Void, перед объявлением функции не пишется спецификатор доступа, а ссылка в c++ обозначается как &, а не ^.
Попробуйте сделать что-то типа this->GetWindow()->Update() или какой аналогичный метод.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)