2

我想使用队列来同步对几个独立代码块之间共享的串行端口的访问。每个块都提供一个回调函数,在需要时,该函数将被排入队列并处理串行端口上的一个原子操作。然后计时器会定期执行所有待处理的操作,希望不会受到干扰。

由于我对 C++/CLI 编程比较陌生,因此我能够创建一个System::Collections::Queue并将一些字符串排入队列;但对于我的一生,我无法弄清楚如何使用指向我的回调函数(void Test())的指针来做同样的事情。

我用谷歌搜索了很多,但即使是最简单的例子也不适合我。所有这些代表,Boost,Marshal,gcnew 的东西现在让我有点困惑。

我正在使用 Microsoft Visual C++ 2010 Express。希望你能帮忙!

来自德国的问候,

保罗

4

1 回答 1

1

在 .NET/CLR 世界中,System.Delegate 类是函数指针的类似物。

由于您正在做一些低级的事情并且回调是在高级托管环境中编写的,因此需要进行编组。

要将托管函数指针用作本机回调,您需要此 MSDN 文章

http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.getdelegateforfunctionpointer(v=vs.80).aspx

如果您有一个 System.Delegate 实例队列,那么只需使用适当参数列表进行 D.DynamicInvoke() 调用。

于 2012-05-14T16:17:13.933 回答