C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Что можно вызывать в потоке?
__Cheat3r
Отправлено: 14.09.2006, 16:54


Станционный диспетчер

Группа: Участник
Сообщений: 110



Всегда мучался с ними, с потоками.
Чтото можно, чтото нельзя.
Никогда не знал точный ответ на этот вопрос.

так вот:
допустимо ли такое в потоке?

CODE

int theITN=FImageTagNo;

pi = new TScvPhotoImage(rcuiAlbum->Key,theITN);//не VCL класс
pi->LoadImages(false);
TComponent*c = this->FindComponent("imgPhoto"+String(theITN));
TImage * img = dynamic_cast<TImage*>(c);
[B] img->Picture->Graphic= pi->PreviewImage();[/B]//Собственно интересует вот это, img — указатель на картинку с формы
//PostMessage(Handle,wmImageDone,theITN,NULL);
}

Или, ктонибудь подскажет где об этом почитать?

Отредактировано __Cheat3r — 15.09.2006, 02:56
Grigoriy
Отправлено: 14.09.2006, 23:05


Мастер участка

Группа: Участник
Сообщений: 381



Потоки — это коварная вешь.
Для приостанова других потоков текущего процесса вызываемые функции должны быть без параметров и вызываться через функцию
CODE
Synchronize(void* func);

являющуюся методом класса TThread
CODE

func()
{//код
}

должна быть без параметров и описана где то.
Иначе ваш поток может выполняться начать после выполнения любой инструкции в участке выполнения машинного кода другого потока программы.
Если управлять потоком с помощью API -
как на WINApi создать и управлять потоком — это уже другой вопрос.

Вернуться в Вопросы программирования в C++Builder