Thread Pool

  • VB.NET

Es gibt 28 Antworten in diesem Thema. Der letzte Beitrag () ist von Bernd.

    picoflop schrieb:

    spreken inglish?

    ja kein Thema. Ich habe mit dem schreiben Probleme. Mit verstehen und selber sprechen nicht.

    Ich habe leider nur einen alten PC ohne Soundkarte usw....
    Mal sehen wenn meine Frau zeitig ins Bett geht schau ich mir die an.




    @AliveDevil
    schau ich mir in ruhe an.
    Mit Boardmitteln. Das gefällt mir.

    danke

    Edit
    Alive lade grade mal dein Projekt und schau mir das an.

    Wie gesagt ich brauche nur eine Info, wann der letzte Thread durch ist.
    Das mit der Downlaodanzeige in Prozent lasse ich eh weg. Kommt eh nur driss raus.
    Dann lasse ich die ProgressBar lieber au Marquee stehen.

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

    @AliveDevil
    ich habe mir dein Tool mal angeschaut.

    Starte ich das Programm, Downloade eine Datei, zeigt er mir im Me.Text den Fortschritt an.
    Klicke ich ein zweites mal auf Download macht er nichts mehr.

    Warum ?
    Liegt das an der Instanzierung ?

    Wenn ich zwei bis dreimal hintereinander drücke, mit pause dazwischen natürlich, kann es sogar sein das die Datei nur noch 0 kb groß ist die auf der Platte ankommt.

    Genau diese Probleme habe ich mit meiner Klasse auch. Woran kann das liegen ?

    PS
    Ansonsten sehr schön und vor allem verständlich geschrieben.
    Dort kann ich mir das mit den Events mal genauer ansehen. Weil damit habe ich bisher noch nicht gearbeitet.

    Erstmal vielen dank

    Bernd


    Ich versuche jetzt mal raus zu bekommen wie ich denn abfragen kann wann der Download fertig ist.

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

    okay, ist mir noch nicht aufgefallen.
    Du könntest dir die Stack-Klasre zu nutze machen, für die Abfage wann der fertig ist: msdn.microsoft.com/de-de/library/system.collections.stack.aspx
    Beispiel:

    VB.NET-Quellcode

    1. dim items as stack(of string)
    2. do
    3. Dim item as string = items.pop()
    4. If items.count = 1 then
    5. ' letztes item
    6. End if
    7. ' deind ftp logik
    8. Loop while items.count > 0

    Ist jetz nur freihand geschrieben, sollte im Grund aber laufen.
    @AliveDevil

    ich habe mal an deinem Projekt ein wenig rumprobiert.
    Nu weis ich wie man sich selber Events baut. (Tja mann lernt nie aus)

    VB.NET-Quellcode

    1. Private Sub Download_Stauts(Get_Status As String, Get_Counter As Integer) _
    2. Handles asyncftp.DownloadFileCompleted
    3. Me.Invoke(Sub() Me.Text &= " " & Get_Status & " " & Get_Counter.ToString)
    4. End Sub

    Jetzt bekomme ich einen Text (Fertig oder Abbruch) zurück und eine Zahl ( 2 oder 1)
    Cool

    Nu werde ich mal versuchen das in meinem Projekt einzubauen.
    Mit dem Gedanken, mal aus dem Kopf

    Durchlaufen einer List(Of String)
    Für jede Datei in List(Of String) einen Thread anschupsen.
    Ist die Anzahl der Rückmeldungen = der Anzahl der Listen Einträge. Bingo.

    Auswerten dachte ich mir so
    Bei erfolgreichem Download bekomme ich eine 2 zurück
    Bei nicht erfolgreich eine 1

    Jetzt kann ich der Mathematik freien lauf lassen und das Ergebnis sagt mir ober fertig und wie viele Dateien Runter gekommen sind und wie viele nicht.

    Ich versuche es mal

    @picoflop
    habe ich mir angeschaut. Sieht Super aus.
    Jedoch ist das FW 4.0.
    Läuft VS2008 denn auch mit 4.0 ?
    Keine Ahnung.

    Danke euch beiden

    Bernd

    Bernd schrieb:

    Jedoch ist das FW 4.0.

    Eigentlich ist das sogar FW 4.5. Das "Async CTP" ist quasi eine Vorschau auf 4.5 (zb VS2011 Developer Preview), die man mit 4.0 und VS2010SP1 "ausprobieren" kann.

    btw:
    Für jede Datei in List(Of String) einen Thread anschupsen.

    Asynchron und Multithreading sind nicht unbedingt das gleiche ...
    Die Hauptidee von "asynchron" besteht darin, dass man meist eine "externe Aktion" hat, die lange dauert, aber die meiste Zeit mit nichtstun vertrödelt.
    zb Download: Man schickt über die Netzwerkkarte eine Anforderung und muss auf die Antwort warten. Man KANN das natürlich mit (managed) Threads machen, aber streng genommen reicht normalerweise EINER, da ja auch die Netzwerkkarte nur einmal vorhanden ist. Den gleichen Effekt hat man zb beim Schreiben auf die Festplatte: Man schickt x Bytes ab und muss dann "ewig" warten, bis die doofe Platte den Rotz gespeichert hat und "Ok" meldet.