Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > C++ Builder
Перезагрузить страницу Не закрывается форма в отдельном потоке
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Leon Leon вне форума
Member
 
Сообщений: 262
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.10.2002
По умолчанию Не закрывается форма в отдельном потоке - 06.02.2014, 15:33

Доброе время суток. Помогите пожалуйста с решением этой проблемы, а то я чего-то не догоняю в чем косяк. Суть вот в чем. В основном потоке идет подключение к базе данных. Из основного потока порождается еще один поток в котором открывается модальная форма с анимацией, В которой проверяется состояние подключения если подключение установлено то в лог отправляется сообщение а поток в котором форма с анимацией прибиваеться. Так вот... он не прибивается. Не могу понять почему. Помогите кто может
Вот код
Это процедура в основном потоке
cpp Код:
void __fastcall TOptionMainForm::TestConnectionButtonClick(TObject *Sender)
{
    if(DataForm->Connection->Connected)
    {
        DataForm->Connection->Close();
        PerformNotification(NoticeLabel,SERVER_DISCONNECTION);
        FormActivate(this);
    }
    DataForm->FillConnectonParams();
    ProcessAnimation *pa = new ProcessAnimation(false);   //  Нить создали и пытаемся подключиться
    try{
        DataForm->Connection->Open();
    }
    catch(...)
    {
        PerformNotification(NoticeLabel,CONNECTION_HAS_FAULT);
        pa->Terminate();
    }


}

Вот код наследника TThread
cpp Код:
__fastcall ProcessAnimation::ProcessAnimation(bool CreateSuspended)
    : TThread(CreateSuspended)
{
    this->Priority = tpLower;
    FreeOnTerminate = true;

}
//---------------------------------------------------------------------------
void __fastcall ProcessAnimation::Execute()
{
    //---- Place thread code here ----
    Connected = DataForm->Connection->Connected;
    Synchronize(&ProcessStart);
    while(!Connected);
    {
         Synchronize(&ProcessCheck);
         Sleep(TIME_OUT);
    }
    Synchronize(&ProcessEnd);
}
//---------------------------------------------------------------------------

void __fastcall ProcessAnimation::ProcessEnd(void)
{
    pf->Close();
    Options::AddNotice(SERVER_FOUNDED);
    delete pf;
}

void __fastcall ProcessAnimation::ProcessStart(void)
{
    pf = new TProcessForm();
    pf->ShowModal();
}

void __fastcall ProcessAnimation::ProcessCheck(void)
{
    Connected = DataForm->Connection->Connected;
}

Я на всякий случай синхронизировал все что можно. Хотя где-то все рвно ошибаюсь. Любая критика и помощь приветствуются, заранее спасибо
Ответить с цитированием
  (#2 (permalink)) Старый
Leon Leon вне форума
Member
 
Сообщений: 262
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.10.2002
По умолчанию 07.02.2014, 20:41

Вобщем, этот вопрос я решил. Проблема в том что форма в потоке открывается с помощью ShowModal(). Программно закрыть получилось только форму показаню с помощбю Show(). Тему можно закрыть
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
флеш игры в отдельном окне Rostyslav Софт и программы 1 21.10.2012 19:48
Форма, внутри еще форма. помогите!!! Nadej C++ Builder 2 04.10.2011 16:03
Как запустить диалоговое окно в отдельном потоке sannik Visual C++ 2 18.11.2008 05:50
Создание BMP файла в отдельном окне nick17 Visual C++ 3 17.08.2008 13:34
Вывод сообщения в отдельном окне Alex911T Java 4 19.12.2007 19:29
Прогресс бар в отдельном потоке Андрейка C. Visual C++ 9 16.11.2006 20:06
Можно ли как-нибудь запустить метод объекта в отдельном потоке zhekha Visual C++ 2 16.05.2006 11:01
Работа в потоке ruth С/С++ 1 15.05.2006 17:16
Класс в отдельном потоке Unhandled exception Palmman Visual C++ 5 06.05.2005 13:54
Можно ли запустите нестатический метод в отдельном потоке Dian Visual C++ 1 03.04.2005 15:58
Как создать процедуру в отдельном потоке Алексеев Николай Delphi 7 09.02.2005 04:03
Сценарий в отдельном файле Powerhead Perl 1 26.11.2002 18:21



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов