आप 2 प्रक्रियाओं के माध्यम से, बाहर की जाँच करने के लिए साझा स्मृति का उपयोग कर सकते हैं MemoryMappedFile
आप मुख्य रूप से mmf
"प्रक्रिया" का उपयोग करके मूल प्रक्रिया में एक मेमोरी मैप की गई फ़ाइल बना सकते हैं, तब तक दूसरी प्रक्रिया बनाएं जब तक कि यह समाप्त न हो जाए और इसे mmf
उपयोग करने के लिए परिणाम लिखने दें BinaryWriter
, फिर mmf
मूल प्रक्रिया का उपयोग करके परिणाम पढ़ें , आप भी कर सकते हैं mmf
कमांड लाइन तर्कों या हार्ड कोड का उपयोग करके नाम पास करें ।
मूल प्रक्रिया में मैप की गई फ़ाइल का उपयोग करते समय सुनिश्चित करें कि आप बच्चे की प्रक्रिया को मैप की गई फ़ाइल के परिणाम को लिखने से पहले मूल प्रक्रिया में मैप की गई फ़ाइल को छोड़ दें
उदाहरण: मूल प्रक्रिया
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();
}
बाल प्रक्रिया
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();
}
इस नमूने का उपयोग करने के लिए, आपको अंदर 2 परियोजनाओं के साथ एक समाधान बनाने की आवश्यकता होगी, फिर आप% चाइल्ड प्रक्रिया का निर्माण परिणाम% चाइल्डडेयर% / बिन / डिबग से लेते हैं और इसे% पैरेंटडायरेक्टरी% / बिन / डिबग में कॉपी करते हैं, फिर चलाते हैं। मूल परियोजना
childDir
और parentDirectory
पीसी सौभाग्य पर अपनी परियोजनाओं के फ़ोल्डर नाम हैं :)