Название: Не вызывается метод из QMetaObject::invokeMethod Отправлено: wester от Июль 21, 2012, 00:35 Доброго времени суток.
Есть класс, наследуемый от QRunnable Код в нем, в ::run() вызывается метод ins() из DbWork Код
обьявление DbWork Код
ну и собственно метод ins не вызывается. В консоль отладки никаких сообщений тоже нет. В чем может быть проблема ? Название: Re: Не вызывается метод из QMetaObject::invokeMethod Отправлено: LisandreL от Июль 21, 2012, 08:43 Так у вас же цикла обработки сообщений в этом потоке нет. Как по вашему должен Qt::QueuedConnection сработать?
Название: Re: Не вызывается метод из QMetaObject::invokeMethod Отправлено: wester от Июль 21, 2012, 12:20 Добавил QEventLoop. Теперь выглядит так посылка события.
Код Но вот получается что постоянно создается новый QEventLoop в новом потоке. Это нормально, или надо переделать ? Название: Re: Не вызывается метод из QMetaObject::invokeMethod Отправлено: LisandreL от Июль 21, 2012, 17:09 Но вот получается что постоянно создается новый QEventLoop в новом потоке. Это нормально, или надо переделать ? Это непонятно зачем.Какие по вашей задумки должны быть преимущества у этого кода по сравнению с прямым вызовом: Код Ну и кроме того можно использовать QCoreApplication::processEvents(); Название: Re: Не вызывается метод из QMetaObject::invokeMethod Отправлено: wester от Июль 21, 2012, 18:22 Задумка такая - будет очередь событий для m_db. И не нужно будет возиться с блокировкой доступа к данным внутри ins()
Хотя, конечно, вызывать напрямую метод тоже кажется лучшим выходом из ситуации |