After mugging so much in above problem i had having in my multi threaded application, eventually i come to the solution. The problem was in QDialog::connect() function; initially i was using QObject::connect (sender, Signalmethod,receiver,Slotmethod) form of connect; in this form my sender and receiver objects were in different threads and Qt was unable to synchronize these two objects in multi threading environment.
Then i used QObject::connect (sender, Signalmethod,receiver,Slotmethod, Qt::ConnectionType) form of connect function, with Qt:
irectConnection as last argument. In the first form connect was using Default value for last argument which is Qt::AutoConnection, in which the signal is queued until the event loop is able to deliver it to the slot. In the Later form (using Qt:
irectConnection), if the signal is emitted from the thread in which the receiving object is not lives, the slot is invoked directly. i.e. the signal is immediately delivered to the slot.