Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Synchronize внутри функции в потоке

479
20 января 2012 года
Ухух
142 / / 05.05.2006
Столкнулся с тем, что Synchronize нормально работает, если находится в тексте потока, но при компиляции возникает ошибка, если он находится внутри функции работающей в потоке.


Вот так работает:

Код:
__fastcall dev_exch::dev_exch(bool CreateSuspended)
        : TThread(CreateSuspended)
{
}
...
extern void To_Tab2_1(void);
...
void __fastcall dev_exch::TH_To_Tab2_1()
{
 To_Tab2_1();
 }
...
void __fastcall dev_exch::Execute()
{
        //---- Place thread code here ----
 FreeOnTerminate=true;
 begin_task:
 if(Terminated){
                        return;
                       }
...
if(Task.Task_Get_AllParam==1){
                                               Task.Task_Get_AllParam=0;
                                                                 ...
                                                Synchronize(TH_To_Tab2_1);//
                                                }

                       ;
 goto begin_task;

}


и еще строчка в хедере:

 
Код:
class dev_exch : public TThread
{            
private:
protected:
        void __fastcall Execute();
public:
        __fastcall dev_exch(bool CreateSuspended);
        void __fastcall dev_exch::TH_To_Tab2_1(void);
         ...        
};



Но, если строчка
 
Код:
Synchronize(TH_To_Tab2_1);//

окажется внутри функции, то при компиляции возникает ошибка: неизвестная функция Synchronize.

Можно ли победить? Или все тащить наружу из функций?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог