網上有C#共享內存類,不過功能太簡單了,並且寫內存每次都從開頭寫。故對此進行了改進,並做了個小例子,供需要的人參考。
主要改進點:
通過利用共享內存的一部分空間(以下稱為“數據信息區”)來存儲當前內存中存儲的數據信息(count和length或者添加其他信息),完成了對內存讀寫功能的完善。
在讀寫內存時,讀寫數據信息區。
1.寫共享內存
根據共享內存當前的使用length,依次往後寫。
2.讀共享內存
讀取從共享內存的起始位置(不包括數據信息區)至length的所有數據。
3.關鍵點
把IntPtr型的m_pwData當指針來操作,實現從內存的任意位置讀寫數據。
m_pwDataWrite = (IntPtr)(m_pwData.GetHashCode() + m_length + infoSize);
4.可改進處
在數據信息區,添加每條數據的length信息,即可實現自由讀取數據,而不必每次都起始讀。
實例截圖如下: