Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: обращение к объекту из потока
Форум программистов > Системное программирование > C, С++ и С Builder > Borland C++ Builder & Kylix
umkasumka
Доброго времени суток уважаемые.
Есть форма, в ней есть обьект TMediaPlayer *Player, есть метод который работает с этим плеером:
void __fastcall TForm1::Play(AnsiString nazvanie)
{
        Player->FileName = nazvanie;
        Player->Open();
        Player->Play();
}

Если я вызываю этот метод с одной мелодией, а вслед за этим еще раз его же, но уже с другой, то поигрываеться мелодия которая была вызвана второй. Такое звучанее мне и требуеться.
Ежели я вызываю вторую мелодию через поток, у меня звучат паралельно сразу две мелодии, и первая и вторая. Видимо происходит пересоздание обьекта плеер для потока. Как этого избежать?
Заранее благодарен.
zubr
Обеспечить синхронизацию потоков. Если поток создается средствами Borland (TThread), то использовать методы Synchronize (для синхронизации с основным потоком) или WaitFor, также возможно Resume и Suspend. Если поток создается на API (CreateThread), то использовать события (CreateEvent) или мутексы (CreateMutex) + WaitForSingleObject.
European
Я вот только не могу понять для чего понадобилось делать более одного потока? Чем вызвано такое решение? Что делают эти потоки, кроме того, что запускают воспроизведение?
umkasumka
Зубру пасиб, я так и делал, тока немного не правильно, использовал потоки Борлонда.
Это на самом деле пример, прога достаточно большая, в основе это большой муз плеер, а в потоке это опрос с ком порта. Пасиб за участие.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.