Unterschied zwischen Backgroundworker und Threads

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Tom.

    Unterschied zwischen Backgroundworker und Threads

    Hi,



    gibt es einen wesentlichen Unterschied zwischen der Funktion des Backgroundworker und Threads?



    der Backgroundworker ist ja in dem Sinn auch ein Thread welcher parallel im Hintergrund abgearbeitet wird während sich das Hauptprogramm und andere Sachen kümmert.

    Threads machen demnach ja nichts anderes...



    kann ich das so sehen?



    und vor allem wann nimmt man was? gibts da vor und nachteile?



    Gruß

    Speedy
    Backgroundworker = Thread

    Ganz einfach

    Exakt das selbe.

    Aber einen Backgroundworker sieht man unter den Controls.



    /EDIT: Ach ja: Ein Backgroundworker hat auch noch ein paar Eigenschaften die Threads nicht haben. Threads sind aber auch einfacher!

    Sakura

    Sakura schrieb:

    Backgroundworker = Thread

    Ganz einfach

    Exakt das selbe.

    Aber einen Backgroundworker sieht man unter den Controls.



    /EDIT: Ach ja: Ein Backgroundworker hat auch noch ein paar Eigenschaften die Threads nicht haben. Threads sind aber auch einfacher!

    Sakura


    Teilweise gebe ich Sakura recht,
    doch bei Threads solltest du beachten das du sie auch ordentlich beendest. Es kann dir passieren das du ein Programm eigentlich beendest, zu mindest denkst du es, aber der Prozess läuft noch weil ein Thread noch aktiv ist.

    Der BackGroundWorker ist in dem Sinne ein Control oder ehr Object was bei verschiedenen Events ausgelöst wird und sich bei einem Beenden des "Prozesses" oder deiner Form mit verabschiedet.

    Keine PN's bezüglich VB an mich! Dafür gibt es das Forum!

    :Kreis hier. Kreis da.:

    okay, danke schonmal!



    soweit ja auch alles verstanden, nur das mit dem beenden noch nicht ganz.



    wenn ich mich dazu entscheide einen Backgroundworker oder einen Thread zu starten.



    beispiel:

    beim empfangen über die serielle schnittstelle soll der Port X in die Variable Y eingelesen werden.

    dannach starte ich meinen Thread / Backgroundworker welcher mir die Variable Y in die Textbox

    zaubert.



    dann ist doch dieser Prozess damit abgeschlossen und beendet!?!?!



    bei einem weiteren Event wird der gleich Thread nochmals gestartet und arbeitet den Vorgang wieder ab.



    oder soll ich das so verstehen das man beim Programmstart alle möglichen Threads starten soll, diese

    in einer Do Loop Schleife rumhängt bis man das Programm per Hand beednet?



    Speedy
    ...dannach starte ich meinen Thread / Backgroundworker welcher mir die Variable Y in die Textbox



    zaubert.
    Beachte aber das ein BGW nicht Thread übergreifend agieren kann. Du müsstest quasi die Variable Y global, und NICHT in einer Sub, in deinem Projekt deklarieren damit sie vom BGW eingelesen und anschließend von der Textbox ausgelesen werden kann.

    Nice Greetz, Tom