Anda dapat menggunakan memori bersama untuk 2 proses berkomunikasi melalui, periksa MemoryMappedFile
Anda terutama akan membuat file yang dipetakan memori mmf
dalam proses induk menggunakan pernyataan "menggunakan" kemudian buat proses kedua sampai berakhir dan biarkan ia menulis hasilnya ke mmf
menggunakan BinaryWriter
, kemudian membaca hasil dari mmf
menggunakan proses induk, Anda juga bisa meneruskan mmf
nama menggunakan argumen baris perintah atau kode keras itu.
pastikan ketika menggunakan file yang dipetakan dalam proses induk yang Anda buat proses anak tulis hasilnya ke file yang dipetakan sebelum file yang dipetakan dirilis dalam proses induk
Contoh: proses induk
private static void Main(string[] args)
{
using (MemoryMappedFile mmf = MemoryMappedFile.CreateNew("memfile", 128))
{
using (MemoryMappedViewStream stream = mmf.CreateViewStream())
{
BinaryWriter writer = new BinaryWriter(stream);
writer.Write(512);
}
Console.WriteLine("Starting the child process");
// Command line args are separated by a space
Process p = Process.Start("ChildProcess.exe", "memfile");
Console.WriteLine("Waiting child to die");
p.WaitForExit();
Console.WriteLine("Child died");
using (MemoryMappedViewStream stream = mmf.CreateViewStream())
{
BinaryReader reader = new BinaryReader(stream);
Console.WriteLine("Result:" + reader.ReadInt32());
}
}
Console.WriteLine("Press any key to continue...");
Console.ReadKey();
}
Proses anak
private static void Main(string[] args)
{
Console.WriteLine("Child process started");
string mmfName = args[0];
using (MemoryMappedFile mmf = MemoryMappedFile.OpenExisting(mmfName))
{
int readValue;
using (MemoryMappedViewStream stream = mmf.CreateViewStream())
{
BinaryReader reader = new BinaryReader(stream);
Console.WriteLine("child reading: " + (readValue = reader.ReadInt32()));
}
using (MemoryMappedViewStream input = mmf.CreateViewStream())
{
BinaryWriter writer = new BinaryWriter(input);
writer.Write(readValue * 2);
}
}
Console.WriteLine("Press any key to continue...");
Console.ReadKey();
}
untuk menggunakan sampel ini, Anda harus membuat solusi dengan 2 proyek di dalamnya, kemudian Anda mengambil hasil build dari proses anak dari% childDir% / bin / debug dan salin ke% parentDirectory% / bin / debug kemudian jalankan proyek induk
childDir
dan parentDirectory
apakah nama folder proyek Anda di pc semoga berhasil :)