Processes are independant threads, and they do not run in the same "space" as the code that "kicks them off" - so almost immediately you call Process.Start, the next line of code will probably be executed.
You can prevent this, by waiting for the process you start to complete:
Process process = Process.Start(@"D:\example.gms");
process.WaitForExit();
List<string> lines = File.ReadAllLines(@"D:\My.txt").ToList();
But ... that will prevent the thread that started the new process from doing anything until the new process exits - which means that if you call this on your UI thread (the one that starts your app running) your app will stop and will not respond at all to user input while the new process is running. If it's likely to take a while, your user may become frustrated, so you will need to be careful (or code a lot more to get round it by moving the Process starting and waiting code into a BackgroundWorker thread).