2009-06-03 2 views
2

Мне нужно передать событие, которое может быть получено любым приложением, запущенным на устройстве Windows CE 5.Каков наилучший механизм для взаимодействия кросс-процесса в Windows CE?

Не сделали этого раньше, поэтому мне было бы интересно узнать, какие техники люди предложили бы увидеть, есть ли что-нибудь, что я не рассматривал.

Все приложения, которые должны получать это событие, основаны на .NET Compact Framework, поэтому решения «только для управления» могут быть рассмотрены.

ответ

6

Я клянусь, я ответил на это где-то - здесь, телеконференции, блог, что-то - но я не могу найти его, так вот она снова:

Вы действительно 4 варианта IPC под Windows CE. Здесь я остановлюсь на решениях CF.

  1. Используйте гнездо. Это боль, поскольку источник событий должен знать об экзистенции раковины. Это, безусловно, мой наименее любимый вариант, и я использую его близко к никогда.
  2. Именованное системное событие (a-la the CreateEvent API). Это работает для простого события типа boolean типа «это включено». CE хорош тем, что вы также можете связать 32-битное значение с событием (SetEventData). Для управляемой реализации see this blog entry (фактический класс - in the SDF).
  3. Файл с отображением памяти. SDF has an implementation, который я использовал в нескольких проектах клиентов, поэтому он довольно хорошо протестирован. Когда-нибудь я должен написать сообщение в блоге о том, как его использовать, но вы умны и, вероятно, можете понять это из документов.
  4. Очереди сообщений точка-точка. Это CE-специфические, но здоровые. Ядро использует их для большого количества системных файлов. Они очень быстрые и надежные. Опять же, the SDF has an implementation. MSDN has an article on usage, но помните, что код MSDN имеет некоторые ошибки в нем, которые SDF исправил.
+0

Привет, Я хочу подтвердить, что SetEventData() недоступен на Windows Mobile. Спасибо. –

+0

'SetEventData' доступен на всех платформах Windows CE, включая WinMo – ctacke

1

Большинство решений, которые я видел там, используют протокол пользовательских сообщений.

.Net Розетки также были использованы.

Я знаю, что в компактном каркасе 3.5 есть WCF, но есть ограничения, и было довольно много отзывов, говорящих, что это ненадежно.

Самая большая проблема с большинством механизмов - это управление версиями сериализации.

Смотрите здесь CF 3.5

Смежные вопросы