我设计了一个名为ReceiveBuffer的StructLayout,在ReceiveBuffer内部,我有一个非托管类型的数组来存储数据。代码如下所示。
[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Ansi)]
public struct ReceiveBuffer
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
public char[] Data;
}
我想在这个结构中实现IDisposable方法,以便在不需要的时候正确地处理ReceiveBuffer。我查看了MSDN中的一些示例,但大多数情况都是在类中使用的,而不是在结构中使用的。我不知道如何在结构中管理它。如何在这样的结构中实现IDisposible?
我有一个非托管类型的数组来存储数据。
不,你没有。它是一个带有Marshal指令的托管阵列。
我不知道如何在结构中管理它。如何在这样的结构中实现IDisposible?
您没有。首先,像这样的结构化和可丢弃是非常有问题的,因为在结构化上发生了大量的复制操作。其次,您关于拥有非托管数组的全部假设是错误的。