Hohe CPU Auslastung bei DownloadStringAsync

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Mainfram.

    Hohe CPU Auslastung bei DownloadStringAsync

    Hallo,
    vielleicht kennt jemand die Lösung.

    Benutze das "DownloadstringAsync" für eine Status abfrage.
    Jetzt ist mir an der CPU Auslastung aufgefallen um so öfters ich abfrage um so größer wird die Auslastung.

    Hier einmal fix gezeigt:





    Hier ein Ausschnitt vom Code:

    VB.NET-Quellcode

    1. Imports System.Net
    2. Public Class Form1
    3. WithEvents WC As New WebClient
    4. Private Sub WC_DownloadStringCompleted(ByVal sender As Object, ByVal e As System.Net.DownloadStringCompletedEventArgs) Handles WC.DownloadStringCompleted
    5. Dim Mods As String
    6. Dim Modlist() As String
    7. Try
    8. Mods = e.Result.ToString
    9. Modlist = Split(Mods, ",")
    10. For Each i As String In Modlist
    11. ListBox1.Items.Add(i)
    12. Next i
    13. Catch ex As Exception
    14. PictureBox1.Visible = True
    15. End Try
    16. End Sub
    17. Private Sub status()
    18. Try
    19. WC.DownloadStringAsync(New Uri(link3 & TrimString1))
    20. Catch ex As Exception
    21. PictureBox1.Visible = True
    22. End Try
    23. End Sub
    24. End Class

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

    Guten Abend,

    ich habe DownloadStringAsync nie benutzt, verstehe jedoch am Async, dass ein neuer Thread generiert wird.
    Die Anzahl der Threads steigt proportional zu der Anzahl der Aufrufe der Methode Async. ( dementsprechend inkrementierst du auch die CPU-Last )


    Eventualiter solltest du den Status nur dann prüfen, wenn eine Methode aufgerufen werden soll, die genau diesen Status voraussetzt.

    Post scriptum: theburningmonk.com/2010/03/thr…reating-your-own-threads/
    Und Gott alleine weiß alles am allerbesten und besser.

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

    um so öfters ich abfrage um so größer wird die Auslastung

    Bitte erkläre das genauer. Meinst Du gleichzeitig? Oder z.B. dass die Auslastung des zehnten Downloads größer ist, als die des ersten?

    Generell:
    Gib Forms und Controls sinnvolle Namen.
    Try-Catch solltest Du hier komplett rauswerfen.
    e.Result ist schon ein String. Wofür nochmal .ToString aufrufen?
    Split(Mods, ",") Visual Studio - Empfohlene Einstellungen
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Sicher das es an den Downloads direkt liegt?
    Habe mal deinen Code zum Teil kopiert und mein CPU bleibt immer Gleich. Geht vllt auf 4% und danach wieder auf 0%.
    Aber da der GarbageCollector bei dir eingreift gehe ich mal davon aus das es bei dir im Code irgendwo ein/mehrere Objekt/e gibt die nicht mehr freigegeben werden.
    Als beispiel schon die ListBox Items. Sollen bei jedem Download die Mods hinten angefügt werden? Ansonsten die ListBox vor dem Download immer mal Leeren.
    Um so voller die ListBox wird, desto länger brauch er auch die neuen Mods hinten anzufügen.

    Mfg
    Conway's Game Of Life Monogame Sample: 80%

    Conway's Game Of Life Monogame Sample