асинхронная связь между c ++ и c # в одном приложении - PullRequest
4 голосов
/ 03 мая 2011

Есть ли способ, которым я могу асинхронно общаться с кодом c # из c ++, в одном и том же процессе?

Я имею в виду, что мне нужно смешивать управляемый c # и неуправляемый c ++ (используя pInvoke) в одном приложении на основе WindowsCE,Часть c # является ядром приложения.Часть кода c ++ имеет поток, который прослушивает события, и когда событие перехватывается, я хочу иметь возможность сообщить части c #, что событие было инициировано.

На данный момент я думал, что событияспособ связи между c ++ и c #, но возможно ли это?

Есть ли способ выполнить эту связь асинхронно?

спасибо,

Ответы [ 2 ]

1 голос
/ 03 мая 2011

Асинхронный обмен данными между C # и C ++ ничем не отличается от асинхронного обмена данными между двумя частями приложения C # - в итоге вы просто вызываете другую функцию в конце, то есть типы * C delegate в C # превращаются в указатели на функции C ++ конец любезно предоставлен .NET JIT. Это называется обратным P / Invoke и позволит неуправляемому C ++ вызывать код .NET.

0 голосов
/ 03 мая 2011

Обычный подход заключается в использовании обратных вызовов, представленных как делегаты в управляемом коде и как указатели функций в неуправляемом коде.Вот статья в MSDN, описывающая подход:

Как: передать делегат ^ нативной функции, ожидающей указатель на функцию

...