Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2012, 18:08   #1
Sonny01
Пользователь
 
Регистрация: 07.11.2009
Сообщений: 49
По умолчанию Потоки, Критическая секция, виснет форма.

Всем привет. Помогите разобраться с ситуацией. Для примера сделал программу в Билдере, создав 1 объект потока и в нём написал:
Код:
void __fastcall Thread1::Execute()
{
        Synchronize(Do);
}

void __fastcall Thread1::Do()
{
        int num = 0;

        //for(;;)
       // {
                EnterCriticalSection(&Form1->css);

                Sleep(3000);

                Form1->Memo1->Lines->Add(num);

                num++;

                LeaveCriticalSection(&Form1->css);
       // }
}
Критическая секция задана в классе формы в паблике и инициирована в конструкторе той же формы:
Код:
public:		// User declarations
        __fastcall TForm1(TComponent* Owner);
        CRITICAL_SECTION css;
};
Код:
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
        InitializeCriticalSection(&css);
}
По кнопке запускаю поток и как только программа доходит до входа в крит. секцию, форма виснет и не отвисает до выхода из неё. Помогите разобраться, в чем проблема?
Sonny01 вне форума Ответить с цитированием
Старый 14.10.2012, 18:18   #2
Sonny01
Пользователь
 
Регистрация: 07.11.2009
Сообщений: 49
По умолчанию

Всему виной таймер))) А если я хочу генерировать к примеру числа в этом потоке к примеру с задержкой в секунду, то как избежать этих подвисов? да и даже если включить бесконечный цикл.
Sonny01 вне форума Ответить с цитированием
Старый 14.10.2012, 18:22   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А что в Билдере Synchronize() отменили?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.10.2012, 18:26   #4
Sonny01
Пользователь
 
Регистрация: 07.11.2009
Сообщений: 49
По умолчанию

Спасибо. всё решено.

Последний раз редактировалось Sonny01; 14.10.2012 в 18:34.
Sonny01 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Критическая секция между потоками на разных ядрах 3D Hunter Win Api 11 26.02.2012 08:06
Локальные потоки и одна форма bulldog5293 Общие вопросы Delphi 4 06.08.2011 17:49
Форма при выполнении процесса виснет Anekdot Помощь студентам 1 10.02.2010 02:10
Потоки. Почему всё-равно виснет окно? TwiX Общие вопросы Delphi 10 13.12.2009 11:51