Announcement

Collapse
No announcement yet.

Invoke Ohne Control in einem Service auf ein Thread

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Invoke Ohne Control in einem Service auf ein Thread

    Moin, Moin liebe Entwicklergemeinde!

    Ich habe einmal eine Frage.

    Und zwar Entwickle ich gerade einen Services, der daten abrufen und diese in eine Datenbank schreiben soll.

    Nun bin ich an dem Punkt, dass ich ein Thread habe, in dem eine endlosschleife ist, die schlafen gelegt wird.

    Das heißt, alle 2 min. sollen die Daten abgerufen werden und danach in die Datenbank geschreiben werden.
    Wenn jetzt der Service gestoppt werden soll, darf dieser nicht gestoppt werden Ohne das der Abhol- und Ablagevorgang korrekt beendet wurde.
    Nun versuche ich auf das Thread zu zugreifen aber habe kein Control, über den ich ein Invoke ausführen kann.

    Hat jemand vielleicht einen Lösungsvorschlag.

    Problem noch einmal zusammengefasst:
    Invoke ohne Control

    Vielen Dank!

  • #2
    Ich verstehe nicht warum du dafür etwas Ähnliches wie Invoke brauchst? Dein Service bekommt vom System den beende dich Event. Sagt dem Thread daraufhin das er sich beenden soll und wartet bis sich der Thread als beendet meldet. Wo ist da eine Threadsynchronisierung nötig?

    Comment


    • #3
      Aber der Thread ist ja nie beendet, da es eine Endlosschleife ist.
      Irgendwie muss ich der Endlosschleife doch von aussen erzählen, dass ende ist.

      Oder habe ich da etwas nicht richtig verstanden?

      Comment


      • #4
        üblicherweise macht man das mi einem boolschen Wert

        while(boolscherWert)
        {
        Schleife
        }

        Wenn du jetzt "von außen" den boolschenWert änderst, wird der Thread beendet
        Christian

        Comment


        • #5
          Wo seit bin ich auch. Aber normalerweise würde ich den Boolschenwert über ein Invoke ändern.

          Allerdings Habe ich ja kein Control. Wie kann ich denn dann nun auf die Delegate funktio oder direkt auf den boolschenwert zugreifen?

          Comment


          • #6
            Wo seit bin ich auch.
            Da kann ich ja nicht wissen, zumal es keine Endlosschleife ist, die du immer anführst. Der Thread könnte eine setBoolschenWert Methode anbieten, die du von außen nutzen kannst.
            Christian

            Comment


            • #7
              Wo seit bin ich auch. Aber normalerweise würde ich den Boolschenwert über ein Invoke ändern.
              Nein. Das ändern eines Boolean halte ich mal für eine atomare Operation. Einen Boolean (sicherheitshalber als volatile markiert) solltest du einfach so ändern können.

              Comment


              • #8
                Ah Ok.

                War also ein gedanken fehler meiner seits und ich kann auf die Werte einer Instanz, einer Klasse, von dem aktuellen und dem neuen Thread zugreifen.

                Vielen Dank für eure Hilfe!

                Comment

                Working...
                X