c#에서 파일 매핑한 공유 메모리를 읽고 쓰기



using System.Linq;

using System.Text;

using System.Windows.Forms;


using System.IO.MemoryMappedFiles;

using System.IO;



namespace ReadSharedMemory

{

    public partial class frmMain : Form

    {

        public frmMain()

        {

            InitializeComponent();

        }


        // 파일 매핑한 공유 메모리 읽기

        private void btnRead_Click(object sender, EventArgs e)

        {

            MemoryMappedFile mapFile = MemoryMappedFile.OpenExisting(

                "MemoryMapTest", 

                MemoryMappedFileRights.ReadWrite);


            using (Stream view = mapFile.CreateViewStream())

            {

                // stream을 String으로 변환

                view.Position = 0;

                using (StreamReader reader = new StreamReader(view, Encoding.UTF8))

                {

                    this.Text = reader.ReadToEnd();

                }

            }

        }



        // 파일 매핑한 공유 메모리 쓰기

        private void btnWrite_Click(object sender, EventArgs e)

        {

            // Mapping된 file 가져오기

            MemoryMappedFile mapFile = MemoryMappedFile.OpenExisting(

                "MemoryMapTest", 

                MemoryMappedFileRights.ReadWrite);

            

            MemoryMappedViewAccessor accessor = mapFile.CreateViewAccessor();


            // 공유 Memory에 쓰기

            byte[] Buffer = ASCIIEncoding.ASCII.GetBytes(txtMemory.Text + "\0");

            accessor.WriteArray(0, Buffer, 0, Buffer.Length);


            accessor.Dispose();

            mapFile.Dispose();

        }


    }

}



여기에 쓰지는 않았지만 프로세스간 공유 메모리를 읽고 쓸 때에는 Mutex를 사용하여 동시에 읽고 쓰기를 하지 못하게 막아 주어야 된다.


신고
Posted by 떡잎
BLOG main image
프로그래밍 공부하면서 써가는 개인 노트 (따라서 여기에 씌여있는 소스의 신빙성을 보장 못함 -.-;;) 이 블로그 보면서 틀린 점이 있으면 꼬옥 알려주세요. by 띠리

공지사항

카테고리

분류 전체보기 (321)
Win32 SDK 초보 (27)
통신관련 (11)
MFC TIP (20)
C/C++ TIP (10)
개발기타 (9)
링크 (2)
견물생심 (24)
이것저것 (7)
용어메모 (3)
데이터베이스 (32)
비주얼 베이직 (10)
하드웨어 (3)
C# (42)
Xcode (3)
델파이 (82)
홈페이지 (5)
MindStorm (0)
낙서 (5)
스크래치 (0)
기타 (6)
아두이노 (1)
라즈베리파이 (2)
안드로이드 (6)
WEB (2)
Total : 875,127
Today : 19 Yesterday : 315