Russian Qt Forum
Ноябрь 22, 2024, 19:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QLocalServer не реагирует на входящее соединение  (Прочитано 3004 раз)
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 кривой (будь он не ладен))?
Второй вопрос в адекватности решения. Я думаю есть более правильные и красивые решения?

Заранее спасибо.
Записан
twp
Гость
« Ответ #1 : Декабрь 23, 2010, 12:02 »

сложно что-либо сказать не видя кода сервера
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.051 секунд. Запросов: 20.