Потоки(tthread)

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем dr.SeM, 25 сен 2008.

  1. dr.SeM

    dr.SeM Гость

    Здраствуйте. У меня возникла следующая проблема:создаю три потока, где третий должен запуститься после окочания роботы одного из двух (наважно какой, для етого использую функцию WaitFor по примеру из книги). вот тут и проблема, Билдер выдаёт ошыбку "неверный дискриптор", понятно, что ето через WaitFor. Как можно исправить ошыбку?
    главный класс(форма)
    Код (Text):
    TForm1 *Form1;
    mynP1 *thr_1;//поток 1
    mynP2 *thr_2;//поток 2
    myP3 *thr_3;//поток 3
    void __fastcall TForm1::btnStartThreadsClick(TObject *Sender)
    {
    thr_1=new mynP1(true);
    thr_2=new mynP2(true);
    thr_3=new myP3(true);
    //thr_1->Priority=tpIdle;
    //thr_2->Priority=tpIdle;
    thr_1->FreeOnTerminate=true;
    thr_2->FreeOnTerminate=true;
    thr_3->FreeOnTerminate=true;
    switch(RadioGroup1->ItemIndex)
    {
    case 0:{thr_1->Priority=tpIdle;thr_2->Priority=tpIdle;}break;
    case 1:{thr_1->Priority=tpHigher;thr_2->Priority=tpHigher;}break;
    case 2:{thr_1->Priority=tpHighest;thr_2->Priority=tpHighest;}break;
    default : {thr_1->Priority=tpNormal;thr_2->Priority=tpNormal;}break;
    }
    thr_1->Resume();
    thr_2->Resume();
    thr_3->Resume();
    }
    поток 3:
    Код (Text):
    extern mynP2 *thr_2;
    void __fastcall myP3::Execute()
    {
    //---- Place thread code here ----
    thr_2->WaitFor();//ожыдаем его завершения потока
    summ3=0;
    for(int i=0;i<=10000;i++)
    {
    //Application->ProcessMessages();
    //Form1->ProgressBar1->Position=i;
    summ3+=i-sin(i*M_PI/180);
    }
    Form1->Memo1->Lines->Add("P3:"+ FloatToStr(summ3));
    }
    Второй поток похож на третий но без extern обьявлеия
     

Поделиться этой страницей