Есть ли простой пример того, как передавать сообщения из небезопасного обратного вызова в управляемый код?
У меня есть собственный dll, который получает некоторые сообщения, упакованные в структуры, и все приходит к функции обратного вызова.
Пример использования следующий, но он также вызывает небезопасный код. Я хочу передать сообщения в мое приложение, которое полностью управляется кодом.
* P.S. У меня нет опыта взаимодействия или небезопасного кода. Я имел обыкновение разрабатывать на C ++ 8 лет назад, но очень мало помню о тех кошмарных временах:)
P.P.S. Приложение загружается как ад, оригинальные разработчики утверждают, что оно обрабатывает 2 миллиона сообщений в секунду. Мне нужно наиболее эффективное решение.
static unsafe int OnCoreCallback(IntPtr pSys, IntPtr pMsg)
{
// Alias structure pointers to the pointers passed in.
CoreSystem* pCoreSys = (CoreSystem*)pSys;
CoreMessage* pCoreMsg = (CoreMessage*)pMsg;
// message handler function.
if (pCoreMsg->MessageType == Core.MSG_STATUS)
OnCoreStatus(pCoreSys, pCoreMsg);
// Continue running
return (int)Core.CALLBACKRETURN_CONTINUE;
}
Спасибо.