Thread и ProgressBar в QT

Тема в разделе "WASM.UNIX", создана пользователем mha, 26 сен 2006.

  1. mha

    mha New Member

    Публикаций:
    0
    Регистрация:
    4 май 2006
    Сообщения:
    6
    Для передачи данных по tcp\ip я использую отдельный поток, который я определяю отдельным классом. Чтобы отображать состояние использую отдельный VBox с ProgressBar - ом. В процедуре run() пишу:
    ...
    while((ReadDataLength =Fl_OpenFile ->readBlock(cThreadBuffer,LENGTH_PACKET)) >0)
    {
    SumLength +=ReadDataLength;
    Sct_ConnectSocket ->writeBlock(cThreadBuffer,ReadDataLength);

    ...

    PBr_SendFileProgress ->setProgress(SumLength);
    }
    VBx_SendFileProgress ->hide();
    ...
    Так вот эта программа приодически зависает, диалог с ProgressBar - ом не закрывается и вообще работает медленней чем хочется. И конечно если убрать строку "PBr_SendFileProgress ->setProgress(SumLength);" все работает зашибись как.
    Вопрос: Что за хня?

    Еще при зависании в консоли выводится сообщение: "Xlib: unexpected async reply (sequence 0x2bbd)". Т.е. я так понимаю: асинхронный доступ - это плохо. А как из вторичного потока взаимодействовать с GUI?