簡體   English   中英

C# StructLayout 和處理

[英]C# StructLayout and dispose

我設計了一個名為 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 中的一些示例,但大多數情況下都在 class 中使用,而不是在 struct 中使用。 我不確定如何在結構中管理它。 如何在這樣的結構中實現 IDisposible?

我有一個非托管類型的數組來存儲數據。

你不可以。 它是一個帶有 Marshal 指令的托管數組。

我不確定如何在結構中管理它。 如何在這樣的結構中實現 IDisposible?

你不。 首先,由於結構上發生了大量的復制操作,像這樣的結構和一次性使用是非常有問題的。 其次,您對擁有非托管數組的整個假設是錯誤的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM