BackgroundWorker

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Marcus Gräfe.

    BackgroundWorker

    Hallo zusammen,

    ich hab mal eine frage. Ich versuche über Timer - x minuten ein Job laufen. Diese Funktioniert soweit.
    Versuche ich aber irgendwas an der Front - dann bekomme ich keine Rückmeldung. #
    Habt ihr da eine Idee, wie ich ein BackgroundWorker einbauen kann?

    lg livius

    livius91 schrieb:

    (...) Habt ihr da eine Idee, wie ich ein BackgroundWorker einbauen kann?

    Sich in die Materie (mit einfachen Beispielen) einlesen, BackgroundWorker entsprechend - mit oder ohne Fortschritt/Abbruch - instanziieren und verwenden. Aus dem BackgroundWorker-Thread wird man möglicherweise invoken müssen, aber bis zu diesem Punkt, wo man das ausprobieren wird, muss man erstmal kommen.
    Das gleichzeitige Erscheinen von Dummheit und Unmündigkeit nach Immanuel Kant ist eines der schlimmsten Dinge, die einem Homo sapiens in geistiger Hinsicht widerfahren können, hat manchmal aber auch durchaus seine Vorteile.
    @livius91 Beschreibe mal, was Du überhaupt vor hast.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wie hier bereits erwähnt wurde:

    1) was hast du überhaupt vor?
    1a) was hast du bisher probiert?
    2) warum möchtest du eine obsolete Komponente verwenden? Gibt's bestimmte Gründe?
    2a) was spräche gegen die moderne Variante: async/await?

    Hier fehlen leider viele Informationen, sodass man keine richtige Antwort geben kann.
    Je nachdem, was genau du vor hast, können diverse Möglichkeiten verwendet werden, das gewünschte Verhalten zu implementieren.

    Es kann z.B. auch sein, dass eher Threads für deine Aufgabe infrage kommen.

    Microsoft hat immer gute Beispiele, wie man Klassen im Framework verwendet: learn.microsoft.com/en-us/dotn…groundworker?view=net-7.0
    Quellcode lizensiert unter CC by SA 2.0 (Creative Commons Share-Alike)

    Meine Firma: Procyon Systems

    Selbstständiger Softwareentwickler & IT-Techniker.
    Man muss nicht immer alles glauben, was Leute im Netz sagen oder einfach einer nach dem anderen nachplappern, nur weil ein sogenannter und oft selbsternannter Guru es irgendwann mal aus seiner Pfeife als Sprechblase in die Umgebungsluft geblasen hat. Das Framework oder .NET ist sehr, sehr groß und bietet extrem viel Kulanz oder Großzügigkeit, was das Altern oder Verwenden von seinen möglichen, zuschaltbaren Inhalten angeht, vor allem dann, wenn man sich z.B. nur hobbymäßig oder privat in der Programmierwelt bewegt – man sollte in der Lage sein, es zu differenzieren. Es wird auch oft schnell etwas Älteres schlechtgeredet, man selbst ist aber nicht in der Lage, etwas Neueres oder ganz Neues in diesem Kontext richtig zu verwenden – ich würde sogar so weit gehen und behaupten, dass 99,9% der Nein-Sager nicht in der Lage ist, einen klassischen Thread als Vordergrundthread richtig zu verwenden und vor allem – auch richtig zu beenden. Viele, die in C# schreiben, kennen auch das Wort „Volatile” überhaupt nicht, was in C viel häufiger vorkommt und eigentlich selbstverständlich ist oder eine Selbstverständlichkeit sein sollte, geschweige denn, zu verstehen, welche Mechanik auf der untersten Hardwareebene dahintersteckt – zum Glück ist das Volatile im .NET nur die finsterste Art und Weise, etwas so zum Laufen zu bringen, dass es nicht unter die Räder der Maschine kommt.
    Das gleichzeitige Erscheinen von Dummheit und Unmündigkeit nach Immanuel Kant ist eines der schlimmsten Dinge, die einem Homo sapiens in geistiger Hinsicht widerfahren können, hat manchmal aber auch durchaus seine Vorteile.

    Gregor Jasinski schrieb:

    Viele, die in C# schreiben, kennen auch das Wort „Volatile” überhaupt nicht


    Wundert mich nicht(sollte deine geschätzte Zahl stimmen), denn ich selbst habe das noch nie in einer Desktop-Anwedung gebraucht. Bisher brauchte ich das nur bei Mikrokontrollern.(Wegen Interrupts)
    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D

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

    Bei der Frage des OT gehe ich davon aus, dass Nebenläufigkeit bisher in seinen Projekten keine Rolle gespiel hat.
    Offensichtlich hat der OT nun aber einen Anwendungsfall, von dem ausgehend seine Suche ihn zum "Backgroundworker" gebracht hat.
    Damals (vor 10 Jahren?) wäre ich froh gewesen wenn ich gleich auf Async/Await gestoßen worden wäre. Ich wußte es nicht besser und habe der Masse an Infor mehr glauben geschenkt als den wenigen, für mich noch unausgegoren anmutenden Hinweisen und Beispielen zu moderneren Technicken.
    In alten Bestandsprojekten wo es möglicherweise andere Dringlichkeiten gibt als etwas Funktionierendes zu erstzen, mag der Oldie gerne geduldet sein, aber in neuen aktuellen Projekten gibt es keinen Grund veraltetete, zudem ressourcenhungrige und wenig flexible Techniken einzusetzen.
    Sollte man sich genötigt sehen sich mit dem Verändern einer Feldvariablen von mehren Theads beschäftigen zu müssen, dürfte man über den Backgroundworker auch bereits hinweggekommen sein.

    Gregor Jasinski schrieb:

    ich würde sogar so weit gehen und behaupten, dass 99,9% der Nein-Sager nicht in der Lage ist, einen klassischen Thread als Vordergrundthread richtig zu verwenden und vor allem – auch richtig zu beenden.


    Werter Kollege, ich wäre mit solchen Aussagen äußerst vorsichtig.
    Alle über einen Kamm zu scheren, wo du deren Hintergründe gar nicht kennst ist allgemein eine ganz schlechte Idee.

    Mal abgesehen von der Tatsache, jemandem zu raten, eine veraltete und als deprecated-markierte Funktion eines Frameworks zu verwenden. Erst Recht, wenn die Komponente definitiv in neueren Versionen entfernt wird.

    DTF schrieb:

    Wundert mich nicht(sollte deine geschätzte Zahl stimmen), denn ich selbst habe das noch nie in einer Desktop-Anwedung gebraucht. Bisher brauchte ich das nur bei Mikrokontrollern.(Wegen Interrupts)


    Ach doch, sogar regelmäßig. Immer wenn eine Variable atomare Zugriffe erlaubt (boolean z.B.) und diese von mehreren Threads aufgerufen werden (können), dann ist ​volatile ein Muss.
    Wenn man sowieso nur mit primitiven Datentypen arbeitet, braucht man sich nicht mit Mutexen beschaffen.

    Quellcode lizensiert unter CC by SA 2.0 (Creative Commons Share-Alike)

    Meine Firma: Procyon Systems

    Selbstständiger Softwareentwickler & IT-Techniker.
    Der TE hat wohl kein Interesse mehr, er war jeden Tag online, hat sich hier aber nicht gemeldet. Daher schließe ich das Topic (auch weil nur noch OT gepostet wird). @livius91 Weitere Fragen bitte konkreter stellen!
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum