Почему мое запущенное событие C++ не обрабатывается в C#, когда я запускаю приложение C# внутри другого процесса?C#

Место общения программистов C#
Ответить
Anonymous
 Почему мое запущенное событие C++ не обрабатывается в C#, когда я запускаю приложение C# внутри другого процесса?

Сообщение Anonymous »

В публичном классе ссылок cpp у меня есть

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

public:
delegate int ReceiveEventHandler(int id, array^ data);
static event ReceiveEventHandler^ OnReceive
{
void add(ReceiveEventHandler^ d)
{
_receiveHandler += d;
}
void remove(ReceiveEventHandler^ d)
{
_receiveHandler -= d;
}
int raise(int id, array^ data)
{
if (_receiveHandler)
{
return _receiveHandler->Invoke(id, data);
}
}
private:
ReceiveHandler^ _receiveHandler;
Этот класс заключен в библиотеку .NET Framework.
В C# на это событие подписывается:

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

Wrapper.OnReceive
+= new Wrapper.ReceiveEventHandler(ReceiveHandler);
Когда я запускаю свое приложение .NET Framework самостоятельно, ReceiveHandler вызывается, когда OnReceive запускается из Cpp.
Но в другом сценарии, когда мое приложение .NET Framework A запускается из другого приложения B, это не работает. загружает сборку A и вызывает один из ее методов для создания экземпляра главного окна A. Таким образом, код A выполняется в процессе B.
Теперь, когда событие запускается из Cpp, ReceiveHandler не вызывается, и я понятия не имею, почему.
Обработчик событий реализован и подписан в A, кстати.

Подробнее здесь: https://stackoverflow.com/questions/798 ... -app-insid
Ответить

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

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

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

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

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