El error que marca es el 0x800A03EC y no da ningun dato mas.
Pero por suerte ya lo he solucionado.
Al final resulta que estas dos linies han de ir al reves
System.Globalization.CultureInfo oldCI = System.Threading.Thread.CurrentThread.CurrentCulture;
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(a);
Y quedar asi
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(a);
System.Globalization.CultureInfo oldCI = System.Threading.Thread.CurrentThread.CurrentCulture;