Mehrere Datein auf FTP Server überprüfen,ob existiert.

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von BjöNi.

    Mehrere Datein auf FTP Server überprüfen,ob existiert.

    Hallo liebes forum:) ,
    unswar hab ich ein Problem (wahrscheinlich wegen dem FTP-Server),nämlich folgendes:

    Also mein Programm überprüft gleichzeitig ob eine bestimmte Datei auf dem FTP Server vorhanden ist,unswar so:

    VB.NET-Quellcode

    1. Try
    2. Dim Browseranfrage As Net.HttpWebRequest
    3. Dim Browserantwort As Net.WebResponse
    4. Dim Browserstream As System.IO.Stream
    5. Dim Browserkodierungsart As System.Text.Encoding
    6. Dim Browserstreamread As System.IO.StreamReader
    7. Browseranfrage = Net.WebRequest.Create(New System.Uri("Mein Server"))
    8. Browserantwort = Browseranfrage.GetResponse
    9. Browserstream = Browserantwort.GetResponseStream
    10. Browserkodierungsart = System.Text.Encoding.GetEncoding("utf-8")
    11. Browserstreamread = New System.IO.StreamReader(Browserstream, Browserkodierungsart)
    12. 'Befehl
    13. Catch
    14. 'Befehl
    15. Else


    Dieses wird 2x überprüft,sozusagen gleichzeitig..also im Load Ereigniss..

    Das Problem ist das die Form dann nach 3 Minuten sich öffnet!

    Also ich suche verzweifelt nach meinem Fehler und hoffe das Ihr mir helfen könntet...:)

    Mfg.eniking1998:D
    Naja, alles in Form_Load wird halt ausgeführt, bevor die Form geladen wird.
    Lagere das ganze in einen Extra Thread aus:

    VB.NET-Quellcode

    1. Sub Form1_Load(...)
    2. Dim bla as new Thread(AddressOf FTPCheckThread)
    3. bla.start()
    4. End Sub
    5. Sub FTPCheckThread()
    6. 'Deine Aktionen
    7. End Sub


    @n1nja: Auch nicht so gut, dann hängt sich die Form auf...
    ...was das Gleiche Ergebnis wie mein Code hat, da das Erstellen eines Threads eigentlich so gut wie gar keine Zeit braucht. Aber wenn du (wie von dir beschrieben) seinen Code direkt in Form_Shown reinhaust, hängt sich die anwendung auf. Ist aber auch egal, das würde er auch selber sehen ;)
    Den Code ohne Thread laufen lassen, würd ich nie machen!

    Ich mache zb alles was nur "bisschen" länger dauert in einen Thread!
    Und ich hab ja nicht geschrieben das er den Code ins Shown-Event tun soll:)

    "Im Form_Shown Event den Thread der Sub starten... Dann muss es gehen!"

    Auch egal... Sollte auf jedenfall damit gelöst sein...!
    So kam das halt in Post #2 rüber... Aber wie gesagt, wir sollten mal mit dem gespamme aufhören ;)
    Hallo lieber n1nja und BjöNi,

    eure Lösung war eig. schon perfekt,nur der einzige Haken an der Sache ist,dass ich wenn eine Datei gefunden wurde den Button1.Enabled = True
    setze und wenn das doppel geschiet,sich folgende Fehlermeldung,erscheint:
    Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement Button1 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde.
    Ich hoffe auf weitere Lösungen..

    Mfg.eniking1998
    Sollte in VS2008 auch gehen!

    Ansonsten wenn es mit der DelegateSub nicht geht musst es mit MethodInvoker machen:

    VB.NET-Quellcode

    1. Imports System.Threading
    2. Public Class Form1
    3. Private invokeLabel As New MethodInvoker(AddressOf SetLabelTXT)
    4. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    5. Dim t As New Thread(AddressOf TueWasImHinterGrund)
    6. t.Start()
    7. End Sub
    8. Private Sub TueWasImHinterGrund()
    9. 'Funktionen etc...
    10. Me.Invoke(invokeLabel)
    11. End Sub
    12. Private Sub SetLabelTXT()
    13. Label1.Text = "text"
    14. End Sub
    15. End Class

    enIking1998 schrieb:

    doch bleibt dann einfach wieder stehen..
    Was verstehst du darunter? Dass sie sich aufhängt (=> keine Rückmeldung)? Das könnte ich mir eig.lich nur vorstellen, wenn du alles in Invoke packst, was du natürlich nicht sollst ^^.
    Poste mal bitte deinen kompletten Code in Form_Load sowie alle damit zusammenhängende Threads und aufgerufene Subs / Funktionen.
    Naja, wenn du keinen Code postest, kann ich ja nicht mal versuchen, dir zu helfen, sorry.
    ...wenn du alles in Invoke packst, was du natürlich nicht sollst ^^.
    Also wie meinst du das?

    Ich tat es so:

    VB.NET-Quellcode

    1. Dim t1 As New Thread(AddressOf Auslastung1)
    2. Dim t2 As New Thread(AddressOf Auslastung2)
    3. Dim t3 As New Thread(AddressOf Auslastung3)
    4. Dim t4 As New Thread(AddressOf Auslastung4)
    5. '...
    6. Private auslastung01 As New MethodInvoker(AddressOf Senior)
    7. Private auslastung02 As New MethodInvoker(AddressOf Junior_Premium)
    8. Private auslastung03 As New MethodInvoker(AddressOf Premium)
    9. Private auslastung04 As New MethodInvoker(AddressOf Administrator_Buy)
    10. Private Sub Auslastung1()
    11. Me.Invoke(auslastung01)
    12. End Sub
    13. Private Sub Auslastung2()
    14. Me.Invoke(auslastung02)
    15. End Sub
    16. Private Sub Auslastung3()
    17. Me.Invoke(auslastung03)
    18. End Sub
    19. Private Sub Auslastung4()
    20. Me.Invoke(auslastung03)
    21. End Sub
    22. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    23. t1.Start()
    24. End Sub
    25. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    26. t2.Start()
    27. End Sub
    28. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    29. t3.Start()
    30. End Sub
    31. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    32. t4.Start
    33. End Sub


    Also ich programmier ein Spiel,wo man Mitgliedschaften kaufen kann...und wenn man etwas kaufte es nicht nochmal kaufen kann...
    (extra Geld verschwendung..)

    Dafür leg ich eine Datei auf dem FTP-Server an,wenn man jenes Produkt kaufte...und wenn man es nun nochmal kaufen will..erscheint eine Fehler -bzw. Warnmeldung..

    Naja wenn man jetzt auf Button1,Button2 und Button 3 jetzt nacheinander drückt friert das Programm nachdem 3. Klick..
    ,also richtiges frieren,ohne (Keine Rückmeldung)ein ...

    Hoffe konnte mein Problem jetzt besser schildern..

    Mfg.eniking1998:)
    Das hat doch überhaupt nichts mehr mit der Eingangsfrage zu tun?! Ich hätte das eher so gemacht:

    VB.NET-Quellcode

    1. Sub Form1_Load(...)
    2. Dim bla as new Thread(AddressOf FTPCheckThread)
    3. bla.start()
    4. End Sub
    5. Sub FTPCheckThread()
    6. Try
    7. Dim Browseranfrage As Net.HttpWebRequest
    8. Dim Browserantwort As Net.WebResponse
    9. Dim Browserstream As System.IO.Stream
    10. Dim Browserkodierungsart As System.Text.Encoding
    11. Dim Browserstreamread As System.IO.StreamReader
    12. Browseranfrage = Net.WebRequest.Create(New System.Uri("Mein Server"))
    13. Browserantwort = Browseranfrage.GetResponse
    14. Browserstream = Browserantwort.GetResponseStream
    15. Browserkodierungsart = System.Text.Encoding.GetEncoding("utf-8")
    16. Browserstreamread = New System.IO.StreamReader(Browserstream, Browserkodierungsart)
    17. 'Befehl
    18. invoke(sub() button1.enabled = false)
    19. Catch
    20. 'Befehl
    21. End Sub

    Als Mischung aus Posts #1, #3 und #9.