在询问了this question并显然使人难为情之后,对此有何想法?我能否将一个缓冲区从C#应用程序提供给C++ dll,然后在C#中发生计时事件,只需将缓冲区的内容复制出来?这样,我避免了明显发生的回调调用引起的任何延迟。那行得通,还是编码阻止这种缓冲区访问?还是我必须进入不安全模式,如果我做了或不这样做,使它起作用的神奇词汇是什么?
回顾另一个问题:
最佳答案
如果你想
然后,除非您将其用作字节指针(不安全代码)或进行复制(封送处理会对您有用),否则您将遇到问题。后者可能会使您放慢速度(但不要猜测基准)。
然后,这非常简单,您只需要确保在非托管代码正在使用关联缓冲区的同时将其固定即可。
听起来好像您想做1.基准了延迟吗?如果是复制(缓冲区不感兴趣的大小有多大),那么您可以更改C#代码以作为字节指针(和长度)与缓冲区交互吗?
如果可以访问C++ / CLI,则通常可以更整洁地解决此问题,因为不托管代码的某些部分(使用原始缓冲区)更容易,而托管部分仅使用其子部分(仅复制)更容易。绝对需要什么)