Aktualisierung Dataset

  • VB.NET

Es gibt 48 Antworten in diesem Thema. Der letzte Beitrag () ist von Madde.

    Neu

    Madde schrieb:

    Was kann ich einbauen, dass während die eine Instanz Änderungen vornimmt, die andere dies gemeldet bekommt und keine Änderungen vornehmen kann, bis die XML nicht mehr in Verwendung ist.
    Das geht jetzt stark in Richtung Datenbänkerei, Stichwort "Pessimistic Locking".

    Naja, wenn das mit dem FileSystemWatcher funzt, dann musste in einen irgendwie gearteten "EditModus" gehen, und das auch iwie ins Dataset schreiben, und abspeichern.
    Der andere reloaded dann ja wg FSW, und kann nachsehen, dass dieses Dataset momentan gesperrt ist.

    Unerfreulich wirds, wenn ersterer User dann nach Hause geht, ohne das Dataset zu entsperren.

    Neu

    Das mit dem Dateilock ist an sich schnell gemacht:

    VB.NET-Quellcode

    1. Dim StreamReader = IO.File.OpenText(Dateipfad)
    2. 'ab jetzt ist die Datei quasi offen und für Schreibarbeiten durch andere Programme oder Methoden gesperrt.
    3. Dim InhaltDerDatei = StreamReader.ReadToEnd()
    4. 'und später zum Freigeben:
    5. StreamReader.Dispose()
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Neu

    das ist jetzt aber ein "Optimistic Lock".
    "Optimistic Lock" bedeutet: Es gibt keine Zugriffs-Beschränkung, sondern man hofft darauf, dass keine gleichzeitigen EditVorgänge auftreten - das ist der "Optimismus" daran.
    Tritt das Übel aber dennoch ein, so gibts eine Exception.
    Jo, und genau das wird mit dem Dateilock nach post#42 passieren.

    Aber @Madde wollte glaub genau das mit seiner Frage in Post #40 vermeiden.

    Neu

    @ErfinderDesRades
    Wenn ich die Exception mit einer Meldung abfangen kann, ist das völlig in Ordnung.
    Das würde für diese Zwecke vollkommen ausreichen.

    Edit:
    Dim StreamReader = IO.File.OpenText(Dateipfad) bricht den Debug ab.
    System.InvalidCastException: "Ungültige Konvertierung von der Zeichenfolge daten.xml in Typ Integer."

    @VaporiZed
    Was ist in Dim InhaltDerDatei = StreamReader.ReadToEnd() mit InhaltDerDatei gemeint?

    Grüße

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Madde“ ()

    Neu

    na, denn hast du in post#42 ja den Ansatz zur Lösung deines Probs gefunden.

    achso - edit.
    Die Zeile die du nennst kann eiglich nicht die Fehlerzeile sein.
    Und mit InhaltDerDatei ist vermutlich der Inhalt der Datei gemeint.
    (Sorry, vlt. kann jemand anners das besser erklären.)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Neu

    Ein Wort sagt mehr als tausend Bilder.
    Bilder
    • OpenWithStreamReader.png

      29,52 kB, 966×324, 8 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Neu

    VaporiZed schrieb:

    Ein Wort sagt mehr als tausend Bilder.


    Ok, zunächst mal zum Verständnis. Da es sich um eine XML mit unzähligen Einträgen handelt, wird diese Art wohl nicht anwendbar sein oder verstehe ich es nur falsch?
    In diesem Zusammenhang wäre es sicher auch möglich eine TXT anzulegen und bei Verwendung einfach "Bearbeitung" reinzuschreiben und bei Verlassen den Inhalt wieder zu löschen. Die andere Instanz schaut dann rein und an Hand des Eintrages oder eben dem "Nichts" kann sie dann weitermachen oder eben nicht.
    Leider bei mir alles nur Theorie, da ich aus Mangel von Kenntnissen den Code nicht verfassen kann und hier auf Eure Hilfe angewiesen bin.

    Unabhängig davon bekomme ich eben diesen Fehler aus Post#44

    Grüße

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Madde“ ()

    Neu

    Madde schrieb:

    In diesem Zusammenhang wäre es sicher auch möglich eine TXT anzulegen und bei Verwendung einfach "Bearbeitung" reinzuschreiben und bei Verlassen den Inhalt wieder zu löschen. Die andere Instanz...
    Find ich eiglich eine gute Idee.
    Per FSW hätte man dann ja einen Benachrichtigungs-Mechanismus.
    Also der FSW überwacht nu nicht die (riesige) Daten-xml, sondern nur die kleine Zusatz-Datei.

    Nur ich hab ATM nicht die Zeit dir das zu coden.