MrSmith: Methode zum dauerhaften Speichern von Benutzerdaten mit stätigem, asynchronem Zugriff in VB.NET 4.0?

Heyho.

Ich arbeite derzeit an einem recht umfangreichen Programm in vb.net 4.0 unter Sharp Develop 4. Mein Problem ist nun, dass ich gerne Benutzereinstellungen dauerhaft speichern möchte, wobei ich jedoch permanenten und uneingeschränkten Schreib- und Lese-Zugriff darauf haben möchte. Grund hierfür sind die sehr zahlreich auftretenden Zugriffe auf gespeicherte Einstellungen (Über 100 in der Minute ohne Weiteres mögich).

Mit einer XML-Datei habe ich es bereits versucht. Jedoch erhalte ich durch die verzögerung beim Speichern und Lesen der Datei häufig Dateizugriffsfehler und ernte dadurch in meinem Programm häufig schwere Exceptions.

Gibt es eine Möglichkeit, daten in einer internen Datenbank innerhalb einer Klasse (Shared) so zu integrieren, dass diesbezüglich keine Überschneidungen entstehen können?

PS: Ich habe es bereits mit einer .settings-Datei versucht, welche ich jedoch (warum auch immer) nicht ansteuern kann. Ich betone erneut, dass ich eine Shared Class umsetze, welche stets verfügbar und in allen Klassen/Forms und Projekten, worin diese referenziert ist, direkt verwendet werden kann. Dabei möchte ich halt, dass die Einstellungen allgemein zentral verfügbar sind und so z. b. die Möglichkeit gegeben ist, dass die Programme untereinander indirekt kommunizieren können.

Ich hoffe, mir kann diesbezüglich jemand eine Referenz geben oder mir sagen, wie ich dies umsetzen kann.

Nebenbei: My.Settings liefert folgenden Fehler innerhalb einer Klasse. "'Settings' is not a member of 'My'" ... Warum auch immer ... Lösung bisher nirgends gefunden.

  1. Lieber MrSmith,

    das hört sich nach einer Race-Condition an...

    Liebe Grüße,

    Felix Riesterer.

  2. Bei der Masse an Zugriffen solltest du nicht jedes mal einen Datei-Zugriff haben, sondern die Daten im Speicher halten und bei definierten Zuständen speichern/laden. Dann hört sich das nach mehreren Treads/Prozessen an. Dann musst du alle Zugriffe gegeneinander absichern. I.d.R. bist du mit einem Single Write Multi Read Lock ganz gut bedient. Ich hab akllerdings weder Ahnung von VB noch von .Net, von daher kann ich dir da nicht wirklich weiterhelfen. Auf die schnelle hab ich das hier gefunden. Ob du das nutzen kannst wirst du besser wissen, sonst sollte sich mit den Suchbegriffen aber was brtauchbares finden lassen.