Лучший способ передать сигнал из (чистого) собственного кода через C++/CLI в (чистый) управляемый код?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Лучший способ передать сигнал из (чистого) собственного кода через C++/CLI в (чистый) управляемый код?

Сообщение Anonymous »

Я хотел бы инициировать вызов функции в (чистом) управляемом коде всякий раз, когда в собственном коде получен определенный триггер. Я не использую конкретный тип триггера, это может быть обратный вызов, переопределение виртуального метода, сигнал, событие или что-то в этом роде...
Мой программный стек — это большой собственный базу кода на C++, затем тонкую оболочку C++/CLI и, наконец, приложение C# с графическим интерфейсом WPF. Я могу редактировать полный стек программного обеспечения. База кода C++ управляется событиями с использованием сигналов/слотов, например, их используют libevent или Qt. Теперь рассмотрим слот C++ viewUpdateRequested(), который должен инициировать повторную отрисовку в графическом интерфейсе C# WPF.
Я обнаружил, что могу получить триггер из C++/CLI для C#, создав обработчик событий в C++/CLI, на который C# может подписаться. Затем я могу вызвать событие в C++/CLI и даже передать некоторые аргументы. Однако это позволяет мне пройти только половину пути, от C++/CLI вверх по стеку программного обеспечения. Мне все еще нужно перейти от нативного кода к C++/CLI.
У меня сложилось впечатление, что в чистом нативном коде я не могу генерировать событие C#, потому что для этого потребуется компиляция с помощью / clr, а это, в свою очередь, делает класс пустым объектом, который не может содержать никаких собственных членов, что в конечном итоге нарушает мою реализацию сигнала/слота. Я что-то здесь пропустил?
Я нашел способ перейти от машинного кода к C++/CLI, передав указатель функции из C++/CLI в машинный код. Но это приводит к следующему стеку кода, который мне кажется некрасивым:

Код: Выделить всё

native code -(function pointer)-> C++/CLI -(event handler)-> C#/WPF
Итак, каковы мои варианты получения события или запуска на всем пути от чистого машинного кода до C#?
Есть ли что-то, что я могу упускаю из виду? Каким будет «чистый дизайн»?

Подробнее здесь: https://stackoverflow.com/questions/791 ... naged-code
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»