XmlSerializer ist vermutlich um Thread-sicher zu sein.
Auch wenn dies der Fall ist, können Sie feststellen, dass das Verhalten in beiden Fällen fehlschlägt: XmlSerializer..ctor(Type type)
Angesichts dessen sieht es ernsthaft wie eine Multi-Threading-Beschränkung aus, die versucht, Serialisierer zu erstellen.
Ich schlage vor, diesen Code zu verwenden, den Sie haben:
%Vor%
Und implementieren Sie eine Sperre für das Hinzufügen. Auf diese Weise erstellen Sie jeweils nur einen Serializer. Der Treffer ist klein, wenn Sie nicht Tonnen verschiedener Arten verarbeiten.
Beachten Sie, dass Sie die Sperre trotzdem benötigen, da Sie doppelte Ausnahmen erhalten könnten, wenn zwei Typen gleichzeitig hinzugefügt werden sollen.
%Vor%
Wenn das Obige immer noch nicht genug ist, würde ich mit einer Lese- / Schreibsperre auf Serializer-Konstruktor vs. Serializer-Verwendung versuchen. Denkweise ist, dass das Multithreading-Problem vielleicht mehr als 2 Ctors gleichzeitig laufen lässt.
Alles oben ist eine große Vermutung, aber wenn ich es wäre würde ich definitiv bestätigen, dass das nicht ist.