Webbrowser multithreaded verwenden ?

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

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    @asusdk: Na, Moment. Ich will weder irgendwelche Code-Gerüch(t)e verbreiten, noch, dass Du mir blindlings vertraust. Ich hab die Silberlöffel auch nicht mit Weisheit gegessen.

    VB.NET-Quellcode

    1. Dim StringArray = {"bli", "bla", "blubb"}
    2. ReDim Preserve StringArray(StringArray.GetupperBound(0) - 1)

    StringArray besteht aus 3 Einträgen. Item(0), Item(1), Item(2). ReDim Preserve setzt nun das obere Ende auf GetupperBound(0) - 1. GetupperBound(0) ist hier 2, da das oberste/letzte Item den Index 2 hat -> nach dem ReDim-Aufruf hat das Feld nur noch 2 Einträge, Item(0) und Item(1), da gecoded wurde, dass das Feld eine neue Obergrenze von 1 haben soll. Obergrenze, nicht Itemzahl.
    Was passiert also bei Deinem Code ReDim Preserve rtbIDs.Lines(rtbIDs.Lines.Count - 1)? Gehen wir davon aus, dass in der RTB 5 Zeilen sind. Damit haben die Zeilen die Indizes von 0-4. rtbIDs.Lines.Count - 1 = 5 - 1 = 4. Also wird mit der ReDim-Anweisung festgelegt, dass das String-Feld so geändert wird, dass das letzte Item den Index 4 hat. Hat es aber schon! Also passiert gar nix. Der Code ist (trotz meiner Befürchtung, weil ich nicht richtig geschaut hab) wirkungslos.

    Gegenbeispiel:
    Eine RTB mit folgenden Zeilen füllen:
    • 1
    • (Leerzeile)
    • 2
    • 3
    • [Leerzeichen] und Enter drücken, damit die nächste Zeile noch entsteht
    • (Leerzeile lassen, nicht Enter drücken, sonst entsteht ne 7. Zeile; logisch)

    VB.NET-Quellcode

    1. Dim StringArray = Richtextbox1.Lines
    2. ReDim Preserve StringArray(Richtextbox1.Lines.Count() - 1)
    3. Stop

    und dann einmal die Maus über StringArray, sobald der Debugger unterbricht. Es kommt inhaltlich das gleiche raus wie die Initialdaten -> nix hat sich geändert.
    Beachte bitte den Unterschied zwischen Count und GetUpperbound(0), der den Wirkungsunterschied zwischen den Beispielen erzeugt. GetUpperbound(0) gibt eine um 1 kleinere Zahl als Count wieder, eben weil die Indizes nullbasiert sind. Item(0), Item(1), Item(2) -> GetUpperbound(0) gibt den Index des letzten Elements wieder (also 2), während ein "Count" 3 wiedergibt - eben die Item-Anzahl.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    ah ok, gut zu wissen, dann muss man nicht immer manuell -1 hinzufügen sondern man könnte gleich upperbound benutzen, aber was genau meinst du mit
    sobald der Debugger unterbricht
    meinst du damit einen absturz des programms ?
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    2. Beispiel, Codezeile 3. Der Codebefehl Stop unterbricht die Fortführung des Programms, so als ob man einen manuellen Haltepunkt gesetzt hat. Sollte natürlich nur zu Debug-Zwecken genutzt werden ;)
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.