Try to keep the Memory-Mapped File open. For example, if the first program is a console, then add a ReadLine, or use a breakpoint:
using( MemoryMappedFile memoryMappedFile = MemoryMappedFile.CreateFromFile. . . )
{
. . .
Console.ReadLine();
}
When it stops at ReadLine, check the second program.
In the real programs, you should probably wait until the second program is terminated.