Я знаю, что они могут использоваться вместе, но я задаюсь вопросом, возможно ли заменить механизм сигналов и слотов QT Повышением. Сигнал в спокойных частях программы (виджеты и такой).
Кто-либо когда-нибудь пробует его? Какие-либо глюки?
Принятие я не использую никакие другие функции MOC и заменяю сигналы/слоты boost.signal, действительно ли возможно обойтись без MOC полностью?
Это действительно неясно, я никогда не видел атрибут «многопоточности» в MIDL. Также нет авторов библиотеки MSDN .
Coclass COM публикует свои требования к многопоточности в реестре с помощью ключа HKCR\CLSID\{ guid }\InProcServer32
. Значение ThreadingModel объявляет квартиру, в которой она нуждается. Если он отсутствует или установлен в «Квартира», то объявляет, что не является потоковой безопасностью и требует помощи от потока STA. CoCreateInstance () использует это значение при создании объекта. При необходимости он запустит поток STA и создаст прокси, если текущий поток не является STA, гарантируя, что он всегда будет использоваться безопасным для потока способом.
Класс [ComVisible] .NET будет зарегистрирован как «Both», что указывает на то, что его можно использовать в потоке в MTA. Довольно оптимистично, но следует философии .NET, что все небезопасно, но может быть сделано безопасным, поставив ключевое слово lock
в нужные места. Обещание, которое не часто тестируется btw, рискованное. Переопределение значения ThreadingModel (или его исключение) требует написания кода для самостоятельной регистрации coclass с атрибутом [ComRegisterFunction]. RegistrationServices.RegisterTypeForComClients () может быть полезен для установки базовых ключей.
Я не думаю, что это то, что вы хотите сделать. Сигналы Qt глубоко интегрированы в структуру и как они генерируются и обрабатываются. Не тратьте свое время:)
-121--2652432- Я рассматривал его для одного из своих проектов. Одним из аспектов, который может вас беспокоить, в зависимости от проекта, является использование Qt Designer . Qt-Designer
создает сигнальные слоты под своими соединениями GUI. Таким образом, если вы используете дизайнера, вы получите проекты, имеющие как signals-slots
, так и boost:: signals
. Есть некоторые проблемы с использованием их вместе. См. этот блог. Хотя это возможно для них, чтобы работать вместе, я бы воздержался от смешивания двух подходов.
Но самая большая проблема, с которой я столкнулся, заключалась в том, что boost:: сигналы
не безопасны для потоков, в то время как Qt signal-slot
- это! Так что это было простое решение для меня, поскольку мой проект был многопоточным.
Вы можете получить относительные достоинства и преимущества подхода boost и Qt из стр. 11
документа в PDF.
HTH
Я не думаю, что это то, что вы хотите сделать. Сигналы Qt глубоко интегрированы во фреймворк и в то, как они генерируются и обрабатываются. Не тратьте свое время :)