C# StructLayout and dispose

226 Views Asked by At

I have designed a StructLayout named ReceiveBuffer, and inside ReceiveBuffer, I have an unmanaged type of array to store data. The code is shown as below.

[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Ansi)]
    public struct ReceiveBuffer
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public char[] Data;
    }

I want to implement IDisposable method inside this struct to dispose ReceiveBuffer properly whenever I don't need it. I've check MSDN for some examples, but most of cases are used in class instead of struct. I'm not sure how to manage that in struct. How do I implement IDisposible in such struct?

1

There are 1 best solutions below

0
TomTom On BEST ANSWER

I have an unmanaged type of array to store data.

No, you do not. It is a managed array with Marshal instructions.

I'm not sure how to manage that in struct. How do I implement IDisposible in such struct?

You do not. First, structs and disposable like this is EXTREMELY problametic due to the tons of copy operations happening on structs. Second, your whole assumption of having an unmanaged array is wrong.