public static void SetObjectBuf <T>(T obj) { byte[] data = Serialize(obj); int bufSize = data.Length; if (bufSize > BufferSize) { bufSize = 0; _sharedMemory.Write(ref bufSize, BufferSizePos); throw new Exception($"[IPC] SetObjectBuf size > bufSize: {bufSize / (1024 * 1024)}Mb(object: {typeof(T)})"); } _sharedMemory.Write(ref bufSize, BufferSizePos); _sharedMemory.Write(data, BufferPos); }
private void WriteDirtyRect(BitmapFrame frame, IntPtr buffer, bool offsetFromSource) { // Write each row as a dirty stripe for (var row = frame.DirtyY; row < frame.DirtyY + frame.DirtyHeight; row++) { var position = (row * frame.Width * bytesPerPixel) + (frame.DirtyX * bytesPerPixel); var bufferOffset = offsetFromSource ? position : (row - frame.DirtyY - 1) * frame.DirtyWidth * bytesPerPixel; bitmapBuffer.Write( buffer + bufferOffset, frame.DirtyWidth * bytesPerPixel, position ); } }
public void ReadWrite_Bytes_DataMatches() { var name = Guid.NewGuid().ToString(); Random r = new Random(); byte[] data = new byte[1024]; byte[] readData = new byte[1024]; r.NextBytes(data); using (var buf = new BufferReadWrite(name, 1024)) using (var buf2 = new BufferReadWrite(name)) { buf.Write(data); buf2.Read(readData); for (var i = 0; i < data.Length; i++) { Assert.AreEqual(data[i], readData[i]); } } }
private void button_BufferReadWrite_Write_Click(object sender, EventArgs e) { int data = Convert.ToInt32(textBox_SharedBuffer.Text); sharedBuffer.Write <int>(ref data); }