Обратный вызов из C ++ в C # внутри другой функции обратного вызова C ++ - PullRequest
0 голосов
/ 14 декабря 2018

Для обратного вызова из C ++ в C # мы можем сделать это так:

C ++:

void DoWork(ProgressCallback progressCallback)
{
   progressCallback(0);
}

C #:

[UnmanagedFunctionPointer(CallingConvention.StdCall)]
delegate void ProgressCallback(int value);

static void main() {
    ProgressCallback callback =
        (value) =>
        {
            Console.WriteLine("Progress = {0}", value);
        };

    DoWork(callback);
}

Вышеприведенная реализация работает толькопередавая обратный вызов в качестве параметра функции.Но я хочу иметь возможность вызывать функцию внутри другой функции обратного вызова в C ++.Например, если у вас есть событие, которое дает вам время через функцию обратного вызова с именем OnTimeUpdated(), я хочу отправить эту обновленную информацию о времени, вызвав функцию обратного вызова "C ++ to C #" INSIDE OnTimeUpdated(), чтобы сторона C # моглаиметь доступ к информации о времени.Проблема в том, что если бы OnTimeUpdated() была функцией обратного вызова API (не пользовательской), то я бы не смог передать свою функцию обратного вызова в качестве параметра.Как мы имеем дело с этими случаями?Любые предложения приветствуются, спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...