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