Backgroundworker läuft nach beenden weiter

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Dodo.

    Backgroundworker läuft nach beenden weiter

    Hallo,
    Ich lasse in einem Backgroundworker mit 2 For each schleifen Matheaufgaben aus 2 List (of Strings)
    und Lösungen ausgeben , jetzt möchte ich den Backgroundworker beenden , aber der Backgroundworker läuft trotztdem weiter.

    Ich habe auch schon versucht mit If Bgw isbusy then und dann mit cancelasync aber das funktioniert ebenfalls nicht.

    Kann mir jemand helfen?

    /e Will die Form nicht schließen, sondern nur den Backgroundworker beenden. (sorry, vergessen zu sagen.)

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

    @alecsoft
    me.close schließt die form in der der code ausgeführt wird und me.hide versteckt sie, aber das ist genau das was der TE nicht will.

    @Chrisyou
    poste mal den code deines Backgroundworkers
    und wo setzt du den befehl das den BGW beenden soll?


    gruß DeError
    CancelAsync() setzt lediglich das Flag CancellationPending auf True.
    Deine Aufgabe ist es, innerhalb von DoWork dieses Flag zu beachten und entsprechend zu handeln.

    Beispiel:

    VB.NET-Quellcode

    1. ' DoWork
    2. While Not bgW.CancellationPending
    3. DoAShortTask()
    4. End While



    Viele Grüße, Phil.
    Da er keine While Schleife hat sondern For Each kannste natürlich trotzdem das Flag nutzen.

    VB.NET-Quellcode

    1. If bgW.CancellationPending Then Exit For


    Dies würde nun die Schleife verlassen, sollte gleich alles abgebrochen werden dann nutzt man einfach

    VB.NET-Quellcode

    1. If bgW.CancellationPending Then Exit Sub