Название: QLocalServer не реагирует на входящее соединение Отправлено: makes от Декабрь 22, 2010, 14:01 Добрый день!
Проблема (как я понял) с "засыпанием" потока сообщений. Хотя проблему я решил, хотелось бы узнать есть ли другое решение и получить комментарии. Подробности. Пишу активикс (ActiveQt, dll). Тестирую его в FoxPro9 (запускаю из-под отладчика MSVC9). Мой активикс в определенный момент инициализирует сервер QLocalServer (создает объект, коннектит SIGNAL(newConnection()) к SLOT(onNewConnection()) и вызывает listen()). После этого другой процесс УСПЕШНО подключается к этому серверу QLocalSocket'ом. Однако, QLocalServer никак не реагирует на входящее соединение (слот onNewConnection() не вызывается и nextPendingConnection() возвращает ноль) до тех пор пока в одном из методов объекта не вызвана QMessageBox::warning(). Из этого я сделал вывод, что цикл сообщений спит мертвым сном, так что QLocalServer не может обработать входящее соединение, и просыпается с вызовом MessageBox'a. Решение придумал такое: запускаю таймер (100 ms), и в его обработчике пишу только QCoreApplication::processEvents(); то есть раз в 100 ms запускаю локальный цикл обработки сообщений (насколько я понимаю диалоговые окна, в том числе Qt-шные действуют таким же образом). Вопрос, с чем это может быть связано (особенности реализации COM в Qt или клиент FoxPro9 кривой (будь он не ладен))? Второй вопрос в адекватности решения. Я думаю есть более правильные и красивые решения? Заранее спасибо. Название: Re: QLocalServer не реагирует на входящее соединение Отправлено: twp от Декабрь 23, 2010, 12:02 сложно что-либо сказать не видя кода сервера
|