My.Computer.FileSystem.DirectoryExists Wartezeit anpassen

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von eichseinet.

    My.Computer.FileSystem.DirectoryExists Wartezeit anpassen

    Hallo Leute,

    der Befehl My.Computer.FileSystem.DirectoryExists("\\meineFreigabe") stellt fest, ob mein Netzlaufwerk verfügbar ist. Das funktioniert auch fehlerfrei.
    Leider dauert es sehr lange, wenn das Laufwerk gerade nicht verfügbar ist. (ca 20sec.) Kann man diese Zeit verkürzen, oder den Befehl abbrechen?

    Gruß

    eddi
    @eichseinet Dies dauert bei mir (Win10-64) ca. eine halbe Sekunde:

    VB.NET-Quellcode

    1. If System.IO.Directory.Exists("\\mmm") Then
    2. MessageBox.Show("da")
    3. Else
    4. MessageBox.Show("nicht da")
    5. End If
    Beachte den Nicht-VisualBasic-Namespace. ;)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Arbeite hier unter Win7. Aber auf meinem Laptop mit win10 dauert der erste Aufruf (einfach über Button) auch fast 20sec. Jeder weitere Versuch antwortet dann sofort. (also wenn das Laufwerk nicht verfügbar ist)
    Das gleiche Verhalten zeigt sich auch unter Win7 und sowohl mit deinem Code als auch mit meinem.
    Wenns da keine offiziellen Möglichkeiten gibt, dann lass ich wohl über nen Timer die Antwort vorwegnehmen.

    Gruß

    eddi
    Bin bei der weiteren Suche auf die Möglichkeit über einen Ping gestossen. Nach ca. 2sec. erscheint die Fehlermeldung, wenn der PC nicht erreichbar ist. Da die Laufwerke / Freigaben auf diesem PC liegen sind sie dann auch verfügbar.

    VB.NET-Quellcode

    1. Dim ping As New Net.NetworkInformation.Ping
    2. Dim result As Net.NetworkInformation.PingReply
    3. Try
    4. result = ping.Send("PC-Name", 3000)
    5. MessageBox.Show(result.RoundtripTime.ToString & " " & result.Status.ToString)
    6. Catch
    7. MessageBox.Show("Nicht erreichbar!")
    8. End Try


    Gruß eddi