I had a similar problem with a C++ program reading a mondo XML file. The final solution was for the producer to break the xml file into several smaller files, but compiling with the large address aware flag worked as a temporary solution.
Surely something similar exists for C#?