VB Aussetzer beim Dateizugriff (Teil2)

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von ProcessControl.

    VB Aussetzer beim Dateizugriff (Teil2)

    Ihr erinnert euch vielleicht an einen vorangegangenen Thread? :)

    VB2010 legte bei mir schöner Regelmäßgkeit "Gedenkpausen" ein beim Zugriff auf eine kleine binäre Netzwerkdatei. Maschine fror dann immer für einige Sekunden komplett ein. (Aber unter VB6 nicht)

    Den größten Teil des Problems konnte ich durch ein sauberes und besseres "Design" erledigen, aber so dann und wann kam es doch immer mal wieder vor.

    Gefundene (zweite) Ursache:

    Greife ich per Netzwerkpfad, also z.B.: "\\Server\Freigabe\Daten.Dat" darauf zu, so gibt es diese Aussetzer.

    Nehme ich die IP zur Hilfe, also z.B.: \\10.20.22.1\Freigabe\Daten.Dat", so geschieht das Gleiche.

    Rufe ich innerhalb des Programms einen File Dialog auf, und klicke mich bis zur Freigabe durch, so verschwinden diese Aussetzer augenblicklich! Und sie bleiben auch weg, selbst wenn ich den Dialog ohne weitere Aktion wieder schliesse!

    Greife ich via gemapptem Netzwerklaufwerk auf die Datei zu, so kommt es garnicht erst zu diesen Aussetzern!

    Es scheint so zu sein, als wenn VB so dann und wann mal zwischendurch "testen" würde, ob denn der Pfad überhaupt gültig ist, oder aber einmalig einen "Beweis" dafür haben möchte. Ich hatte bis dato (Unter VB6 bei Problemen mit der Namensauflösung oder bei mehreren IP Adressen in verschiedenen Subnetzen auf einer Maschine) eigentlich eher die direkte IP-Pfadangabe als Problemlöser auf der Liste! NICHT jedoch das Mapping! Das ist mir nun wieder mal neu!

    Leider taucht das Phänomen nicht auf allen Maschinen in diesem Netz auf, und in meinem privaten Netz konnte ich das Problem überhaupt nicht nachvollziehen. Auch taucht es NUR auf, wenn noch andere Maschinen im Netz an der Datei arbeiten. (Trotz sauberer und korrekter Zugriffsmodi!)

    Solche oder ähnliche Phänomene sind wohl in Netzwerken nicht wirklich neu, aber kennt jemand dafür eine eine Erklärung? Oder noch besser einen "Universal" Workaround für VB2010?

    Schon klar...aber leider nicht immer ganz einfach..:-)

    Ich dachte bis jetzt z.B. auch immer, das meine verwendeten ActiveX in verschiedenen Childformen sich nicht von einem Dateizugriff in einer anderen Childform "beeindrucken" lassen. Weil ja (zumindest diese) ActivX sich in verschiedenen Threads selbstständig auf die CP Kerne "verteilen"....Unter VB6 war das halt so.

    Nun ja, und nun unter VB2010 mußte ich halt feststellen, das ein einzelner anscheinend manchmal problematischer Dateizugriff im Netz gleich die ganze Maschine "lähmen" kann...und damit auch natürlich die anderen Childs. Und das sogar auf einer Mehrkern-Maschine.

    Das Netz selbst ist völlig OK, die alte VB6 Anwendung läuft ja problemlos.

    Hilft alles nichts...muß hier erst wieder von "0" an Erfahrung aufbauen, woran sowas liegen kann und wie man sowas umgehen/abfangen kann. Und wahrscheinlich wird es dann sogar auch noch wieder Unterschiede zwischen WinXP und Win7 geben, die natürlich auch wieder unterschiedliche Lösungen verlangen.

    Darum bin ich auch für jeden Tip und jede geteilte Erfahrung dankbar, wenns mein Ideen- und Verständnis Niveau wieder etwas mehr anheben kann.

    ProcessControl schrieb:

    jeden Tip

    Da du eh noch am Anfang mit .Net bist, schau dir am besten gleich das VS 2012 (derzeit als RC, in ein paar Tagen auf MSDN und vermutlich Mitte September als Express-Version) und dort im speziellen das neue Async Modell an. Das läßt sich auch im VS2012 für FW 4.0 nachinstallieren, so dass es für Windows ab XP zur Verfügung steht. Damit bekommst du einen wunderbar linearen Ablauf und gleichzeitig kannst du blockendes Verhalten (insb. bei IO) vermeiden.

    Genau SOLCHE Tips meinte ich!

    Danke...Das könnte das herumdoktern an den Symthomen vermeiden und stattdessen die eigentlich Ursache ausschalten. Werde mich aber auch parallel noch mit Threading beschäftigen.

    Danke euch allen erstmal!