Su MSDN Magazine di Settembre 2009 è stato pubblicato un articolo in cui si parla di alcune delle nuove classi disponibili nella versione 4.0 del .NET Framework. Tra le altre, mi sembra molto interessante la classe MemoryMappedFile. Come il nome lascia intuire, si tratta di un oggetto mediante il quale è possibile gestire file mappati in memoria, con la possibilità di condividerli tra due o più processi. Sarà possibile, ad esempio, avere qualcosa di questo tipo:
1: using (varmmf = MemoryMappedFile.CreateNew("mymappedfile", 1000))
2: {
3: using (var stream = mmf.CreateViewStream())
4: {
5: var writer = new BinaryWriter(stream);
6: writer.Write("Hello World!");
7: var startInfo = new ProcessStartInfo("process2.exe");
8: startInfo.UseShellExecute = false;
9: Process.Start(startInfo).WaitForExit();
10: }
11: }
Nella riga 1, si crea un nuovo file mappato in memoria, da cui si ricava uno stream (riga 5). Un altro processo può a questo punto accedere al file, semplicemente conoscendone il nome:
1: using (varmmf = MemoryMappedFile.OpenExisting("mymappedfile"))
2: {
3: using (var stream = mmf.CreateViewStream())
4: {
5: var reader = new BinaryReader(stream);
6: Console.WriteLine(reader.ReadString());
7: }
8: }
Questo esempio è preso direttamente dall'articolo citato, a cui si rimanda per maggiori informazioni.
Technorati Tag:
.NET,
Programming,
C#