1

什么样的 C# 缓冲区可以处理这个问题?

我需要我的 C# 解决方案 .exe 从生成实时视频帧(高达 60/秒)并将其复制到 C# 缓冲区的 Visual-C++ DLL 获取大约 2-3MB 的数据,每秒最多 60 次。然后 C# 将通过 USB 将此数据转发到另一台计算机。

我试过 C# String 但有一个最大大小限制(大约 10KB 左右)。

我正在考虑一个包含数据缓冲区和握手变量的 C# 结构。

可能,我需要多个缓冲区,所以可能需要这些结构的数组。

但是,本质上,什么是最好的方法(最快的!!!)给 DLL 某种 C# 缓冲区的目标地址,以便 DLL 可以将其 2-3MB 生成的数据复制到缓冲区,然后设置一个变量标志,同时C# 正在轮询此标志以了解数据何时在缓冲区中,因此可以进一步处理它。

缓冲区应该首先由 C# 创建,而不是 DLL,我认为。

4

1 回答 1

1

这是一个想法:

  1. 让 C# 代码分配缓冲区
  2. 将其固定到固定地址
  3. 将指针传递给 C++ 代码
  4. C++ 代码现在可以直接写入缓冲区(甚至可能使用零拷贝方法)

优点是您可以使用正常的、托管的byte[].

于 2013-07-12T15:46:36.130 回答