从C ++到另一个C ++回调函数中的C#回调

时间:2018-12-14 17:21:57

标签: c# c++ callback

要从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回调函数(非自定义),那么我将无法将回调函数作为参数传递。我们如何处理这些案件?任何建议表示赞赏,谢谢。

0 个答案:

没有答案